Уничтожить в строке все вхождения подстроки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Заданная строка символов. Уничтожить в нем все вхождения подстроки 'Y + Z ".

Решение задачи: «Уничтожить в строке все вхождения подстроки»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char* str_remove(char* s, const char* o){
  5.     size_t n;
  6.     char*  p, *t = s;
  7.     if((s = strstr(s, o)) == NULL)
  8.         return t;
  9.  
  10.     n = strlen(o);
  11.     for(p = s; *s; *s = *p){
  12.         if(! strncmp(p, o, n)){
  13.             p += n;
  14.             continue;
  15.         } else
  16.             ++s;
  17.         ++p;
  18.     }
  19.     return t;
  20. }
  21.  
  22. int main(void){
  23.     char s[] = "x + yx + y(x + y) / (x + y)x ";
  24.     puts( str_remove(s, "x + y") );
  25.     return 0;
  26. }

Объяснение кода листинга программы

В данном коде реализована функция str_remove, которая принимает два аргумента: строку s, в которой необходимо удалить подстроку o. В функции происходит следующее:

  1. Проверка: является ли подстрока o частью строки s. Если нет, то возвращается исходная строка s.
  2. Определяется длина подстроки o.
  3. В цикле происходит сравнение каждого символа строки s с символами подстроки o. Если символы совпадают, то происходит переход к следующему символу подстроки o и продолжается проверка следующего символа строки s. Если символы не совпадают, то происходит переход к следующему символу подстроки o и продолжается проверка следующего символа строки s. Если все символы подстроки o проверены и не найдено совпадений, то возвращается исходная строка s. В функции main создается тестовая строка s, содержащая подстроку x + y. Затем вызывается функция str_remove с передачей этой строки и подстроки x + y в качестве аргументов. Результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы