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