从文件中读取字节并覆盖相同的字节

时间:2015-03-10 19:50:54

标签: c++ c file fread

我使用fread来读取文件的内容,我想覆盖我刚读过的字节。所以,让我们说:

fread(buffer, buffersize, 1, FilePointer);

我想覆盖我刚读过的完全相同的字节。缓冲区的大小各不相同,但我想覆盖我刚读过的完全相同的字节数。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

以下是您可以做您想做的事情。我使用ftell()来记住起始位置,这样我就不用担心fread()成功还是失败。

filePos = ftell(FilePointer);
fread(buffer, buffersize, 1, FilePointer);
fseek(FilePointer, filePos, SEEK_SET);
fwrite(buffer2, buffersize, 1, FilePointer);

请注意,如果您同时阅读和编写相同的文件,则需要确保在从阅读切换到写入时使用fflush()fseek(),反之亦然。如果不这样做,则会得到未定义的行为。 You can read more about that here.

顺便说一句,如果您正在寻找更快的方式来读取/写入文件中的字节,您可能希望使用mmap()将文件映射到内存。