Удалить подстроку из строки - C (СИ)

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

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

Даны строки S и S0. Удалить из строки S последнюю подстроку, сов падающую с S0. Если совпадающих подстрок нет, то вывести строку S без изменений. Код удаляет первую подстроку, подскажите как удалить последнюю подстроку?
#include <stdio.h>
#include <string.h> 
 
int main() { 
int t,i,j;
    char s1[200];
    char s2[100];
    char *p;
 
    printf("Enter first string: ");
    gets(s1);
 
    printf("Enter second string: ");
    gets(s2);
 
    p = strstr(s1,s2);
 
    if (p){
      for (i=0; i<strlen(s2);i++)
        for(j=0; j<strlen(s1);j++)
          p[j]=p[j+1];
    }
    printf("%s\n",s1);
    getchar();
return 0;
}

Решение задачи: «Удалить подстроку из строки»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char* change_str(char *s1,char *s2)
{
 
    char *lastP,*p;
    //int le,i;
    p = strstr(s1,s2);
    while (p)
    {
        lastP=p++;
        p=strstr(p,s2);
    }
    if (lastP)
    {
        strcpy(lastP,lastP+strlen(s2));
    }
    return s1;
}
int main()
{
    char buf[256];
    char s2[100];
    strcpy(buf,"bb55aa66cc77bbdefg");
    strcpy(s2,"bb");
    change_str(buf,s2);
    printf("\n%s",buf);
}

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

В данном коде представлен функция change_str, которая принимает два аргумента типа char*s1 и s2. Функция ищет подстроку s2 в строке s1 и заменяет все вхождения этой подстроки на пустую строку. Вот список действий, которые происходят в коде:

  1. Вызов функции strstr с аргументами s1 и s2 для поиска первого вхождения подстроки s2 в строке s1.
  2. Если подстрока найдена, то сохраняем адрес последнего символа подстроки в переменную lastP.
  3. Переходим к следующему вхождению подстроки, вызывая функцию strstr с аргументами p и s2.
  4. Если следующее вхождение подстроки найдено, то обновляем значение lastP и переходим к следующему шагу. Если следующее вхождение не найдено, то возвращаем lastP.
  5. Если lastP не равно NULL, то копируем символы, начиная с lastP и до конца строки, в переменную lastP.
  6. Возвращаем исходную строку s1. В функции main создается буфер buf с заданной строкой, а также строка s2 с подстрокой, которую необходимо удалить. Затем вызывается функция change_str с аргументами buf и s2. Результат выводится на экран с помощью функции printf.

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


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

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

5   голосов , оценка 3.8 из 5
Похожие ответы