Уничтожить в строке все вхождения подстроки - C (СИ)
Формулировка задачи:
Заданная строка символов. Уничтожить в нем все вхождения подстроки 'Y + Z ".
Решение задачи: «Уничтожить в строке все вхождения подстроки»
textual
Листинг программы
#include <stdio.h> #include <string.h> char* str_remove(char* s, const char* o){ size_t n; char* p, *t = s; if((s = strstr(s, o)) == NULL) return t; n = strlen(o); for(p = s; *s; *s = *p){ if(! strncmp(p, o, n)){ p += n; continue; } else ++s; ++p; } return t; } int main(void){ char s[] = "x + yx + y(x + y) / (x + y)x "; puts( str_remove(s, "x + y") ); return 0; }
Объяснение кода листинга программы
В данном коде реализована функция str_remove
, которая принимает два аргумента: строку s
, в которой необходимо удалить подстроку o
.
В функции происходит следующее:
- Проверка: является ли подстрока
o
частью строкиs
. Если нет, то возвращается исходная строкаs
. - Определяется длина подстроки
o
. - В цикле происходит сравнение каждого символа строки
s
с символами подстрокиo
. Если символы совпадают, то происходит переход к следующему символу подстрокиo
и продолжается проверка следующего символа строкиs
. Если символы не совпадают, то происходит переход к следующему символу подстрокиo
и продолжается проверка следующего символа строкиs
. Если все символы подстрокиo
проверены и не найдено совпадений, то возвращается исходная строкаs
. В функцииmain
создается тестовая строкаs
, содержащая подстрокуx + y
. Затем вызывается функцияstr_remove
с передачей этой строки и подстрокиx + y
в качестве аргументов. Результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д