Заменить содержимое одной строки на содержимое другой - C (СИ)
Формулировка задачи:
Есть две строки символов:
Нужно заменить "string" на содержимое c1. Как это сделать?
Листинг программы
- char* c ="my string"
- char c1="ssss";
Решение задачи: «Заменить содержимое одной строки на содержимое другой»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <Windows.h>
- char *replace_str(char *str, char *orig, char *rep)
- {
- static char buffer[4096];
- char *p;
- if (!(p = strstr(str, orig))) // Is 'orig' even in 'str'?
- return str;
- strncpy(buffer, str, p - str); // Copy characters from 'str' start to 'orig' st$
- buffer[p - str] = '\0';
- sprintf(buffer + (p - str), "%s%s", rep, p + strlen(orig));
- return buffer;
- }
- int main(void)
- {
- char* c = "my string";
- char c1[12] = "ssss";
- puts(replace_str(c, "string", c1));
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
- В функции
replace_str
мы ищем первое вхождение подстрокиorig
в строкеstr
с помощью функцииstrstr
. Если подстрока не найдена, то возвращаем исходную строку без изменений. - Если подстрока найдена, то мы копируем символы из исходной строки от начала до места, где найдена подстрока, в буфер
buffer
. - Затем мы заменяем подстроку в буфере на
rep
, используя функциюsprintf
. - Возвращаем измененный буфер.
- В функции
main
мы создаем строкуc
иc1
, затем вызываем функциюreplace_str
с этими строками. - Результат замены выводим на экран с помощью функции
puts
, а затем приостанавливаем выполнение программы с помощью функцииsystem
. - Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д