В строках найти слово 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
на экран. - Программа успешно завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д