Уничтожить в строке все вхождения подстроки - 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. В функции происходит следующее:

  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
Похожие ответы