Как заменить подстроку в строке? - C (СИ)
Формулировка задачи:
Задание: В строке все группы символов child заменить на children.
Не судите строго, я только начинаю работать со строками)
Выдает Hello children children child chil( и еще какой-то символ). Тут, я как понял, я вышел за пределы строки, но в чем именно проблема понять не могу.
#include <stdio.h> #include <string.h> #include <stdlib.h> main() { int k=0,i,d,n,j; char s[]="Hello child child child child"; char r[strlen(s)]; int t=strlen(s); for (i=0;i<t;i++) { if ((s[i]=='c')&&(s[i+1]=='h')&&(s[i+2]=='i')&&(s[i+3]=='l')&&(s[i+4]=='d')){ if((i+6)!=t){ n=i+4; d=i; strcpy(r,s+n); memmove(s+d,"children",10); strcat(s,r);} else memmove(s+d,"children",10); } } puts(s); return 0; }
Решение задачи: «Как заменить подстроку в строке?»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define DELIM " \t\n" int main() { char s[] = "Hello child child child child", word[] = "child", ns[80] = "", *ptr; for (ptr = strtok(s, DELIM); ptr; ptr = strtok(NULL, DELIM)){ if(0 == strcmp(ptr, word)) strcat(ns, " children"); else strcat(ns, ptr); } printf("%s", ns); return 0; }
Объяснение кода листинга программы
В этом коде заменяется подстрока в строке. Вот список действий:
- Подготовка:
- Включаются необходимые заголовочные файлы: stdio.h и string.h.
- Определяется строка-разделитель (DELIM), которая разделяет исходную строку на слова.
- Объявляются и инициализируются переменные: s, word и ns.
- s - исходная строка с подстрокой, которую нужно заменить.
- word - подстрока, которую нужно заменить.
- ns - результирующая строка, в которой будет заменена подстрока.
- Указатель ptr инициализируется значением strtok(s, DELIM).
- Цикл:
- Цикл выполняется, пока ptr не станет равным NULL. Это происходит, когда все токены в строке s будут обработаны.
- Внутри цикла проверяется, равно ли значение ptr подстроке word.
- Если это так, то к ns добавляется строка
children
. - Если это не так, то к ns добавляется значение ptr.
- Вывод:
- Выводится значение ns.
- Конец:
- Возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д