В строках найти слово child и заменить его на children - C (СИ)
Формулировка задачи:
Нужно в строках найти слово child и заменить его на children так,что бы слово,которое идет после child не менялось.Вот мой код,в конце бред уже,я не знаю что там писать,помогите плиз,или скажите какими функциями пользоваться для решения.Заранее благодарю.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main() {char s[200]; char a[3]; a[1]='r'; a[2]='e'; a[3]='n'; int i,n=5; for( i=0;i<n;i++) { int cputs(char *s); } for(i=0;i<n;i++){ if (s[i] == 'c' && s[i+1]=='h' && s[i+2]=='i' && s[i+3]=='l' && s[i+4]=='d') if (s[i+5]='\0') {s[i+5]='r'; s[i+6]='e'; s[i+7]='n';} else {for (i=5;i<200;0){ char *strcat(char *s, const char *a);} } printf("%s",s[i]); return 0; } }
Решение задачи: «В строках найти слово child и заменить его на children»
textual
Листинг программы
#include <stdio.h> #include <string.h> char* str_replace(size_t m, char* s, const char* w1, const char* w2){ size_t n, n1, n2, o; char* p, *t = s; if((s = strstr(s, w1)) == NULL) return t; n1 = strlen(w1); n2 = strlen(w2); if(n2 == n1){ do { strncpy(s, w2, n2); s += n2; } while((s = strstr(s, w1)) != NULL); } else if(n2 < n1){ //сжатие for(p = s; *s; *s = *p){ if(! strncmp(p, w1, n1)){ strncpy(s, w2, n2); s += n2; p += n1; continue; } else ++s; ++p; } } else {//растяжение n = strlen(s); o = n2 - n1; do { if((n + o) > m) break; memmove(s + o, s, (n - (size_t)(s - t)) * sizeof(char)); strncpy(s, w2, n2); s += n2; n += o; } while((s = strstr(s, w1)) != NULL); } return t; } int main(void){ char s[256] = "child, parent-child, (child), child, end=child"; puts(s); puts( str_replace(sizeof(s)/sizeof(s[0])-1, s, "child", "children") ); return 0; }
Объяснение кода листинга программы
- В функции
str_replace
осуществляется замена всех вхождений подстрокиw1
наw2
в строкеs
. - Если
w2
имеет длину меньше или равнуюw1
, то происходит простое наращивание строкиs
до необходимого размера. - Если
w2
длиннееw1
, то происходит сжатие строкиs
с выходом за границы целевой строки. - Если
w2
корочеw1
, то происходит растяжение строкиs
до необходимого размера. - Функция возвращает исходную строку
s
в случае, если подстрокаw1
не найдена в ней. - В функции
main
создаётся тестовая строкаs
, содержащая подстрокуchild
для последующей замены наchildren
. - С помощью функции
str_replace
в переменнойs
происходит замена всех вхожденийchild
наchildren
. - Выводится изменённая строка
s
на экран. - Программа успешно завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д