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