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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void func(char *s, const char *s1, const char *s2)
  5. {
  6.     char *p1 = s, *p2 = NULL;
  7.     while ((p1 = strstr(p1, s1)) != NULL && *p1 != '\0')
  8.     {
  9.         p2 = p1;
  10.         p1++;
  11.     }
  12.     if (p2 != NULL)
  13.     {
  14.         strncpy(p2, s2, strlen(s2));
  15.     }
  16. }
  17.  
  18. int main(void)
  19. {
  20.     // Если искомая и заменяемая
  21.     // строка равны по длине
  22.     char s[BUFSIZ] = "asd asd asd sdfg";
  23.     char s1[BUFSIZ] = "asd";
  24.     char s2[BUFSIZ] = "123";
  25.     func(s, s1, s2);
  26.     puts(s);
  27.     return 0;
  28. }

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

  1. В функции func происходит замена последнего вхождения строки s1 на строку s2 в строке s.
  2. В функции func используется функция strstr, которая ищет первое вхождение подстроки s1 в строке s.
  3. Если подстрока найдена, то в функции func происходит копирование строки s2 начиная с позиции, где найдена подстрока s1.
  4. В функции main создается строка s, содержащая asd asd asd sdfg.
  5. В функции main создаются строки s1 и s2, содержащие asd и 123 соответственно.
  6. Функция func вызывается с аргументами s, s1 и s2.
  7. Результат работы функции func выводится на экран с помощью функции puts.
  8. Программа возвращает 0, что означает успешное завершение работы.

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


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

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

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

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

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

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