Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 1 год назад.
Найти и заменить в строке заданное слово. Что искать и на что заменять определяется пользователем.
Нужно заменить все найденные слова.
Вот моя попытка:
char str[1000];
char str_fr[40];
char str_zamina_na[40];
gets_s(str_fr);
gets_s(str_zamina_na);
int len = strlen(str) - 1;
int lend = strlen(str_fr);
int lend_2 = strlen(str_zamina_na);
char * s = strstr(str, str_fr);
int l = 0, w = 0, zm = lend_2 - lend;
for(int i = 0; i < strlen(str); i++)
{
if(str[i] == s[l])
{
l++;
if (l == lend)
{
for (int i = 0; i < lend_2; i++) {
s[i] = str_zamina_na[w]; w++;
}
}
}
}
Заменяет не все найдены слова. Также если слово которое мы вставляем больше за то которое мы заменяем, первые буквы следующего слова теряются. Если слово меньше наоборот. Возможно нужно как-то удлинить строку.
Ну, что-то в духе
char str[1000]; // Будем считать, что заведомо хватит, иначе слишком сложно :)
char from[40];
char to[40];
gets_s(str);
gets_s(from);
gets_s(to);
for(char * c = strstr(str,from); c; c = strstr(str,from))
{
memmove(c+strlen(to),c+strlen(from),strlen(c+strlen(from))+1);
memcpy(c,to,strlen(to));
}
cout << str << endl;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу сервер на qtВопрос такой, могу ли я по очереди проинициализировать два socket и использовать их вместе
Есть класс List и класс NodeКак я не пытался описать деструкторы, методы del_first и del_last работают некорректно
Товарищи подскажите, как выровнять блок меню по центру который большей ширины контейнера в котором он лежит