Замена слов в тексте - C (СИ)
Формулировка задачи:
uses crt; var str:string; word1,word2:string[30]; len,position:byte; begin writeln('Введите слово-образец:'); readln(word1); writeln('Введите слово-заменитель:'); readln(word2); writeln('Введите исходную строку:'); readln(Str); len:=length(word1); position:=pos(word1,str); while position<>0 do begin delete(str,position,len); insert(word2,str,position); position:=pos(word1,str) end; writeln(str); readln; end.
Решение задачи: «Замена слов в тексте»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define STRSIZE 30 int main() { char src[STRSIZE], dst[STRSIZE], str[STRSIZE], * p = str; printf("Введите слово-образец: "); scanf("%s", src); printf("Введите слово-заменитель: "); scanf("%s", dst); printf("Введите исходную строку: "); scanf("%s", str); int lenSrc = strlen(src); int lenDst = strlen(dst); while ((p = strstr(p, src))) { memmove(p + lenDst, p + lenSrc, strlen(p + lenSrc) + 1); memcpy(p, dst, lenDst); p += lenDst; } printf("%s\n", str); return 0; }
Объяснение кода листинга программы
В этом коде осуществляется замена всех вхождений строки-образца на строку-заменитель в исходной строке. Вот список действий, которые происходят в коде:
- Ввод данных:
- Строка-образец:
scanf(
%s, src);
- Строка-заменитель:
scanf(
%s, dst);
- Исходная строка:
scanf(
%s, str);
- Строка-образец:
- Вычисление длины строки-образца и строки-заменителя:
- Длина строки-образца:
int lenSrc = strlen(src);
- Длина строки-заменителя:
int lenDst = strlen(dst);
- Длина строки-образца:
- Поиск первого вхождения строки-образца в исходной строке:
while ((p = strstr(p, src)))
: этот цикл будет выполняться до тех пор, пока не будет найдено следующее вхождение строки-образца.
- Перемещение символов в исходной строке, чтобы заменить строку-образец на строку-заменитель:
memmove(p + lenDst, p + lenSrc, strlen(p + lenSrc) + 1);
- Копирование строки-заменителя на место, где была найдена строка-образец:
memcpy(p, dst, lenDst);
- Перемещение указателя
p
на следующую позицию, где нужно искать строку-образец:p += lenDst;
- Повторение шагов 3-6 до тех пор, пока не будет найдено следующее вхождение строки-образца.
- Вывод измененной исходной строки:
printf(
%s\n, str);
- Возврат 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д