Замена слова в файле с помощью C - PullRequest
0 голосов
/ 18 февраля 2011

Как заменить слово в файле другим словом, используя C?

Например, у меня есть файл, который содержит:

my friend name is sajid

Я хочу заменить слово друг на дедушка , чтобы файл был изменен на:

my grandfather name is sajid 

(я работаю на Ubuntu Linux.)

Обновление:

Я делаю подачу в C. Я создал файл .txt и записал в него некоторые данные, но по мере выполнения моей программы мне приходится искать какой-то текст и заменять его другими словами. Проблема, с которой я сталкиваюсь, заключается в том, что в моем файле я написал

"I bought apple from the market"

Если я заменю яблоко на ананасы, так как у яблока 5 символов, а у ананаса 9 символов, оно будет записано как

"I bought pineapple m the market"

Это также повлияло на слова, написанные после яблока.

Я должен сделать это, используя C, а не скрипт командной строки.

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Как вы уже поняли, вы не сможете внести изменения в исходный файл.

Простое решение - прочитать каждую строку из исходного файла и записать ее в стандартный вывод, произведя замену при необходимости. В псевдокоде:

open original file
while not at end of original file
  get next string from original file
  if string == "friend"
    write "grandfather" to standard output
  else
    write string to standard output
end while

После этого вы можете перенаправить вывод в другой файл, аналогично тому, как работают sed и awk.

Кроме того, вы можете создать файл назначения в коде и напрямую записать его. Если вам нужно заменить исходный файл новым файлом, вы можете использовать библиотечные функции remove() и rename() в stdio.

1 голос
/ 18 февраля 2011

Как насчет использования существующей программы Linux sed?

sed -i 's/friend/grandfather/' filename

Это заменит друга на дедушку в существующем файле.Сначала сделайте копию, если хотите сохранить оригинал!

Редактировать:

В качестве альтернативы загрузите файл в строку STL, замените «друг» на «дедушка», используя такую ​​технику, как this и сохраните новую строку в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...