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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
void func(char *s, const char *s1, const char *s2)
{
    char *p1 = s, *p2 = NULL;
    while ((p1 = strstr(p1, s1)) != NULL && *p1 != '\0')
    {
        p2 = p1;
        p1++;
    }
    if (p2 != NULL)
    {
        strncpy(p2, s2, strlen(s2));
    }
}
 
int main(void) 
{
    // Если искомая и заменяемая 
    // строка равны по длине
    char s[BUFSIZ] = "asd asd asd sdfg";
    char s1[BUFSIZ] = "asd";
    char s2[BUFSIZ] = "123";
    func(s, s1, s2);
    puts(s);
    return 0;
}

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

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