Найти и заменить в строке заданное слово [закрыт]

113
15 декабря 2020, 18:30
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику 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++;
                }

            }
        }

    }

Заменяет не все найдены слова. Также если слово которое мы вставляем больше за то которое мы заменяем, первые буквы следующего слова теряются. Если слово меньше наоборот. Возможно нужно как-то удлинить строку.

Answer 1

Ну, что-то в духе

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;
READ ALSO
std::string operator[]

std::string operator[]

Пробую запустить такой код

152
Два socket в одном потоке

Два socket в одном потоке

Пишу сервер на qtВопрос такой, могу ли я по очереди проинициализировать два socket и использовать их вместе

108
Как описать деструктор?

Как описать деструктор?

Есть класс List и класс NodeКак я не пытался описать деструкторы, методы del_first и del_last работают некорректно

99
Выровнять блок по центру контейнера

Выровнять блок по центру контейнера

Товарищи подскажите, как выровнять блок меню по центру который большей ширины контейнера в котором он лежит

135