使用C替换文件中的单词

时间:2011-02-18 14:01:23

标签: c replace

如何使用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 个答案:

答案 0 :(得分:1)

如何使用现有的Linux sed程序?

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

这将在现有文件中替换与祖父的朋友。如果你想保留原件,请先复印一份!

编辑:

或者,将文件加载到STL字符串中,使用this等技术将“friend”替换为“grandfather”,并将新字符串保存到文件中。

答案 1 :(得分:1)

正如您所知,您将无法在原始文件中进行更改。

简单的解决方案是从原始文件中读取每个字符串并将其写入标准输出,并根据需要进行替换。在伪代码中:

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

然后,您可以在执行时将输出重定向到另一个文件,类似于sedawk的工作方式。

或者,您可以在代码中创建目标文件并直接写入。如果您需要使用新文件替换原始文件,则可以使用remove()中的rename()stdio库函数。