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