我使用fread
来读取文件的内容,我想覆盖我刚读过的字节。所以,让我们说:
fread(buffer, buffersize, 1, FilePointer);
我想覆盖我刚读过的完全相同的字节。缓冲区的大小各不相同,但我想覆盖我刚读过的完全相同的字节数。 我怎么能这样做?
答案 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()
将文件映射到内存。