Заменить в строке S все вхождения строки S1 на строку S2 - C (СИ)
Формулировка задачи:
Даны строки S , S1, S2. Заменить в строке S все вхождения строки S1 на строку S2 - C (СИ)
Решение задачи: «Заменить в строке S все вхождения строки S1 на строку S2»
textual
Листинг программы
void main()
{
char text[Nmax], text[Nmax], text[Nmax], text[Nmax];
int L, K;
printf_s(...);
gets_s(text);
printf_s(...);
gets_s(S1);
printf_s(...);
gets_s(S2);
char *S = strstr(text, S1);
while (S)
{
L = strlen(text);
K = L - strlen(S);
strcpy_s(A, S+ strlen(S1));
text[K] = '\0';
strcat_s(text, S2);
strcat_s(text, A);
S = strstr(text, S1);
}
printf_s("...%s", text);
_getch();
}
Объяснение кода листинга программы
- Программа начинается с ввода строки
textс помощью функцииgets_s(). - Затем вводится строка
S1с помощью функцииgets_s(). - Вводится строка
S2с помощью функцииgets_s(). - Строка
Sинициализируется значениемtext, на которое следует первая вставкаS1. - Затем в цикле while происходит следующее:
- Вычисляется длина строки
textс помощью функцииstrlen(). - Вычисляется индекс конца строки
S1с помощью вычитания длиныS1из длиныtext. - Строка
Aинициализируется значениемSплюс длинаS1. - В строке
textзаменяется подстрокаS1на строкуS2с помощью функцииstrcat_s(). - В строку
textвставляется строкаAс помощью функцииstrcat_s(). - Строка
Sобновляется значениемtextс помощью функцииstrstr().
- Вычисляется длина строки
- Выводится строка
textс помощью функцииprintf_s(). - Программа завершается с помощью функции
_getch().