fprintf(file, "%d %d %d", array[0], array[1], array[2]);
为了使该语句起作用,我必须以“wb”模式而不是“w”模式打开文件。二进制模式如何使语法起作用?
我假设您在打开文件时正在使用此功能:
FILE *fopen(const char *path, const char *mode);
在 Linux 下编程时会b
被忽略,因为它没有任何作用。从手册页:
模式字符串还可以包含字母“b”作为最后一个字符或作为上述任何双字符字符串中的字符之间的字符。这完全是为了与 C89 兼容,没有任何效果;'b' 在所有符合 POSIX 的系统上都被忽略了,包括 Linux。(其他系统可能会以不同的方式处理文本文件和二进制文件,如果您对二进制文件执行 I/O 并希望您的程序可以移植到非 Unix 环境,则添加“b”可能是个好主意。)
至于 Windows(来源在这里):
b :以二进制(未翻译)模式打开;涉及回车和换行字符的翻译被禁止。
因此得出结论:
如果您希望在 C 代码中可移植地访问二进制数据,出于兼容性原因,请使用“b”。
首先使用 fopen FILE *fp = fopen("file.bin", "r+"); 获取文件指针 然后使用 fread 读取和 fwrite 到 .. 写入。另请参阅此 手册,请仔细阅读手册并注意 fread 和 fwrite 返回一个整数,应检查该整数以查看已读取/写入的确切数量。