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

Reading bytes from a file and overwriting the same bytes

我正在使用 fread 读取文件内容,我想覆盖刚刚读取的字节。那么让我们说:

fread(buffer, buffersize, 1, FilePointer);

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

这里是你可以做你想做的事的方法。我用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.

顺便说一句,如果您正在寻找在文件中 reading/writing 字节的更快方法,您可能需要考虑使用 mmap() 将文件映射到内存。