开发者

Replacing a word in a file, using C

开发者 https://www.devze.com 2023-02-12 09:30 出处:网络
How do I replace a word in a file with another word using C? For example, I have a file which contains:

How do I replace a word in a file with another word using C?

For example, I have a file which contains:

my friend name is sajid

I want to replace the word friend with grandfather, such that the file is changed to:

my grandfather name is sajid 

(I am developing on Ubuntu Linux.)

Update:

I am doing filing in C. I have created a .txt file and write some data into it, but as my program progresses I have to search some text and replace it with the other words. The problem I am facing is that suppose in my file I wrote

"I bought apple from the market"

If i replace apple with pineapples as apple has开发者_JS百科 5 char and pineapple has 9 char it will write it as

"I bought pineapple m the market"

It also has affected the words written after apple.

I have to do it using C, not a command line script.


How about using the exiting Linux sed program?

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

That will replace friend with grandfather in the existing file. Make a copy first if you want to keep the original!

Edit:

Alternatively, load the file into an STL string, replace 'friend' with 'grandfather' using a technique such as this, and save the new string into a file.


As you've realized, you won't be able to make the change in place in the original file.

The easy solution is to read each string from the original file and write it to standard output, making the replacement as necessary. In pseudocode:

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

You can then redirect the output to another file when you execute it, similar to how sed and awk work.

Alternately, you can create a destination file in the code and write to it directly. If you need to replace the original file with the new file, you can use the remove() and rename() library functions in stdio.

0

精彩评论

暂无评论...
验证码 换一张
取 消