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