Заменить содержимое одной строки на содержимое другой - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть две строки символов:
char* c ="my string"
char c1="ssss";
Нужно заменить "string" на содержимое c1. Как это сделать?

Решение задачи: «Заменить содержимое одной строки на содержимое другой»

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;
}

Объяснение кода листинга программы

  1. В функции replace_str мы ищем первое вхождение подстроки orig в строке str с помощью функции strstr. Если подстрока не найдена, то возвращаем исходную строку без изменений.
  2. Если подстрока найдена, то мы копируем символы из исходной строки от начала до места, где найдена подстрока, в буфер buffer.
  3. Затем мы заменяем подстроку в буфере на rep, используя функцию sprintf.
  4. Возвращаем измененный буфер.
  5. В функции main мы создаем строку c и c1, затем вызываем функцию replace_str с этими строками.
  6. Результат замены выводим на экран с помощью функции puts, а затем приостанавливаем выполнение программы с помощью функции system.
  7. Возвращаем 0, чтобы указать, что программа успешно завершилась.

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы