Заменить в строке 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;
- }
Объяснение кода листинга программы
- В функции func происходит замена последнего вхождения строки s1 на строку s2 в строке s.
- В функции func используется функция strstr, которая ищет первое вхождение подстроки s1 в строке s.
- Если подстрока найдена, то в функции func происходит копирование строки s2 начиная с позиции, где найдена подстрока s1.
- В функции main создается строка s, содержащая
asd asd asd sdfg
. - В функции main создаются строки s1 и s2, содержащие
asd
и123
соответственно. - Функция func вызывается с аргументами s, s1 и s2.
- Результат работы функции func выводится на экран с помощью функции puts.
- Программа возвращает 0, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д