Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку - C (СИ)
Формулировка задачи:
Выполнить поиск подстроки внутри данной строки,замену найденной подстроки на другую строку
Пример
Исходная строка:
aaaabbbaaa
Заменяемая подстрока: bbb
Заменяющая подстрока: сссс
Результат:аааассссааа
Пока получается только вот что
#include <cstdlib> #include <iostream> #include <string>#include <stdio> using namespace std; int main(int argc, char *argv[]) {char q[80]; int i; printf(" Введите строку\n"); scanf("%s",q); i=0; while(q[i]!='\0') {if(q[i]!='a') q[i]='c'; i++;} printf(" результат:%s",q); system("PAUSE"); return EXIT_SUCCESS; }
Решение задачи: «Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main(){ char *text="bbbbbbaaaaabbbbb", res[BUFSIZ], *sWhat="bbb", *sWith="cccc" , *a=text, *b=res; for(; *b=*a; ++a, ++b){ if(!strncmp(a, sWhat, strlen(sWhat))){ strcpy(b, sWith); a+=strlen(sWhat)-1; b+=strlen(sWith)-1; } } puts(res); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками
- Объявление переменных: — text — исходная строка — res — строка, в которую будет производиться замена — sWhat — подстрока, которую необходимо найти — sWith — подстрока, на которую необходимо заменить найденную подстроку — a — указатель на текущий символ в исходной строке — b — указатель на текущий символ в результирующей строке
- Итерация по символам исходной строки
- Проверка условия: если текущий символ исходной строки совпадает с первым символом подстроки sWhat (не учитывая регистр), то
- Копирование подстроки sWith в результирующую строку
- Переход к следующему символу в исходной и результирующей строках
- Вывод результирующей строки
- Возврат 0, означающий успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д