用O_RDWR打开 - 如何覆盖?

时间:2011-10-18 00:52:28

标签: c file-io

我想读取一个文件并更改其内容并将其写回文件。

我使用open读取文件如下:

bfd = open(m_file_name.c_str(), O_RDWR)

但是当我写作时,它有点附加到旧的那个。我怎么能覆盖它?

2 个答案:

答案 0 :(得分:3)

您可以使用lseek(2)

bfd = open(m_file_name.c_str(), O_RDWR);
// read your file
lseek(bfd, 0, SEEK_SET);
// do whatever manipulation & write file

如果您的文件现在尺寸小于原始文件,则需要将大小截断为新大小,或者在结尾处保留文件旧端的字节。如果它更大,文件应该在你写的时候自动增长。

答案 1 :(得分:0)

如果你想在特定的位置写作,你必须寻找lseek

你不是要覆盖整个文件,对吗?只是其中的一小部分?如果您试图覆盖整个文件,那么这是一种不好的方法。