Заменить в строке S последнее вхождение строки S1 на строку S2 - C (СИ) (71001)

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

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

Помогите пожалуйста решить задачу Даны строки S, S1 и S2. Заменить в строке S последнее вхождение строки S1 на строку S2.

Решение задачи: «Заменить в строке S последнее вхождение строки S1 на строку S2»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.     char s[100] = "AlphaBravoCharlieDelta AlphaBravoCharlieDelta AlphaBravoCharlieDelta",
  7.                 s1[] = "Charlie", s2[] = "####", *p, *start, buf[80];
  8.     start = s;
  9.     while(1){
  10.         p = strstr(start, s1);
  11.         if(p == NULL)break;
  12.         start = p + strlen(s1);
  13.     }
  14.     strcpy(buf,start);
  15.     start -= strlen(s1);
  16.     strcpy(start, s2);
  17.     start += strlen(s2);
  18.     strcat(start, buf);
  19.     puts(s);
  20.     return 0;
  21. }

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

  1. Подключение необходимых библиотек для работы со строками
  2. Объявление переменных:
    • s[100] - исходная строка
    • s1[] - строка, которую необходимо заменить
    • s2[] - строка, на которую необходимо заменить
    • p - указатель на последний символ строки s1 в строке s
    • start - указатель на начало строки s
    • buf[80] - временный буфер для хранения части строки s до первого вхождения s1
  3. Установка начального значения start на начало строки s
  4. Цикл по поиску следующего вхождения строки s1 в строке s с использованием функции strstr
    • Если p не равно NULL, то строка s1 найдена, и p указывает на первый символ s1 в строке s
    • Переустановка значения start на p + strlen(s1), чтобы искать следующее вхождение s1 с учетом уже найденного
    • Если p равно NULL, то цикл завершается
  5. Копирование строки buf в буфер start, начиная с позиции, следующей за последним вхождением s1
  6. Копирование строки s2 в буфер start, начиная с позиции, следующей за последним вхождением s1
  7. Добавление строки buf к строке s, начиная с позиции, следующей за последним вхождением s1
  8. Вывод измененной строки s
  9. Возврат 0, что означает успешное выполнение программы

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


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

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

12   голосов , оценка 4.083 из 5

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

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

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