用C改变文件中的一个字节

Yuv*_*dam 6 c

我有一个文件流打开并准备好了.

如何在流中访问和更改单个字节,以便更改反映在文件中?

有什么建议?

Ric*_*dle 8

#include "stdio.h"

int main(void)
{
    FILE* f = fopen("so-data.dat", "r+b"); // Error checking omitted
    fseek(f, 5, SEEK_SET);
    fwrite("x", 1, 1, f);
    fclose(f);
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,跳转到*text*mode文件中的计算位置是实现定义的.对于文本和二进制模式不同的平台(即几乎除了Unix之外的所有内容),您需要处理换行符可以是多个字节(或其他有趣的)这一事实.这对Yuval AI来说是否重要,我不知道. (3认同)

Meh*_*ari 5

FILE* fileHandle = fopen("filename", "r+b"); // r+ if you need char mode
fseek(fileHandle, position_of_byte, SEEK_SET);
fwrite("R" /* the value to replace with */, 1, 1, fileHandle);
Run Code Online (Sandbox Code Playgroud)