Заменить в строке S последнее вхождение строки S1 на строку S2 - C (СИ) (71001)
Формулировка задачи:
Помогите пожалуйста решить задачу
Даны строки S, S1 и S2. Заменить в строке S последнее вхождение
строки S1 на строку S2.
Решение задачи: «Заменить в строке S последнее вхождение строки S1 на строку S2»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char s[100] = "AlphaBravoCharlieDelta AlphaBravoCharlieDelta AlphaBravoCharlieDelta",
- s1[] = "Charlie", s2[] = "####", *p, *start, buf[80];
- start = s;
- while(1){
- p = strstr(start, s1);
- if(p == NULL)break;
- start = p + strlen(s1);
- }
- strcpy(buf,start);
- start -= strlen(s1);
- strcpy(start, s2);
- start += strlen(s2);
- strcat(start, buf);
- puts(s);
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками
- Объявление переменных:
- s[100] - исходная строка
- s1[] - строка, которую необходимо заменить
- s2[] - строка, на которую необходимо заменить
- p - указатель на последний символ строки s1 в строке s
- start - указатель на начало строки s
- buf[80] - временный буфер для хранения части строки s до первого вхождения s1
- Установка начального значения start на начало строки s
- Цикл по поиску следующего вхождения строки s1 в строке s с использованием функции strstr
- Если p не равно NULL, то строка s1 найдена, и p указывает на первый символ s1 в строке s
- Переустановка значения start на p + strlen(s1), чтобы искать следующее вхождение s1 с учетом уже найденного
- Если p равно NULL, то цикл завершается
- Копирование строки buf в буфер start, начиная с позиции, следующей за последним вхождением s1
- Копирование строки s2 в буфер start, начиная с позиции, следующей за последним вхождением s1
- Добавление строки buf к строке s, начиная с позиции, следующей за последним вхождением s1
- Вывод измененной строки s
- Возврат 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д