Заменить в строке 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, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д