Замена слов в тексте - C (СИ)

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

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

uses crt;
var
str:string;
word1,word2:string[30];
len,position:byte;
begin
 writeln('Введите слово-образец:');
 readln(word1);
 writeln('Введите слово-заменитель:');
 readln(word2);
 writeln('Введите исходную строку:');
 readln(Str);
 len:=length(word1);
 position:=pos(word1,str);
 while position<>0 do
  begin
   delete(str,position,len);
   insert(word2,str,position);
   position:=pos(word1,str)
  end;
 writeln(str);
 readln;
end.
передайлате код пожалуйста в СИ

Решение задачи: «Замена слов в тексте»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define STRSIZE 30
 
int main() {
    char src[STRSIZE], dst[STRSIZE], str[STRSIZE], * p = str;
 
    printf("Введите слово-образец: ");    scanf("%s", src);
    printf("Введите слово-заменитель: "); scanf("%s", dst);
    printf("Введите исходную строку: ");  scanf("%s", str);
 
    int lenSrc = strlen(src);
    int lenDst = strlen(dst);
    while ((p = strstr(p, src))) {
        memmove(p + lenDst, p + lenSrc, strlen(p + lenSrc) + 1);
        memcpy(p, dst, lenDst);
        p += lenDst;
    }
 
    printf("%s\n", str);
 
    return 0;
}

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

В этом коде осуществляется замена всех вхождений строки-образца на строку-заменитель в исходной строке. Вот список действий, которые происходят в коде:

  1. Ввод данных:
    • Строка-образец: scanf(%s, src);
    • Строка-заменитель: scanf(%s, dst);
    • Исходная строка: scanf(%s, str);
  2. Вычисление длины строки-образца и строки-заменителя:
    • Длина строки-образца: int lenSrc = strlen(src);
    • Длина строки-заменителя: int lenDst = strlen(dst);
  3. Поиск первого вхождения строки-образца в исходной строке:
    • while ((p = strstr(p, src))): этот цикл будет выполняться до тех пор, пока не будет найдено следующее вхождение строки-образца.
  4. Перемещение символов в исходной строке, чтобы заменить строку-образец на строку-заменитель:
    • memmove(p + lenDst, p + lenSrc, strlen(p + lenSrc) + 1);
  5. Копирование строки-заменителя на место, где была найдена строка-образец:
    • memcpy(p, dst, lenDst);
  6. Перемещение указателя p на следующую позицию, где нужно искать строку-образец:
    • p += lenDst;
  7. Повторение шагов 3-6 до тех пор, пока не будет найдено следующее вхождение строки-образца.
  8. Вывод измененной исходной строки:
    • printf(%s\n, str);
  9. Возврат 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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