如何在C中写入二进制文件?

时间:2010-10-03 14:33:55

标签: c file-io

为什么此代码无法按预期工作?

#include <cstdio>
    int main()
{
char mona[] =       
                   "\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x01\x90"
                   "\x00\x00\x02\x5d\x01\x03\x00\x00\x00\x26\xef\xb3\x78\x00\x00\x00\x45\x74\x45\x58"
   // <snip>
                   "\x00\x49\x45\x4e\x44\xae\x42\x60\x82";
FILE *fp = fopen("mona.png","wb");
fputs(mona,fp);
fclose(fp);
return 0;
}

3 个答案:

答案 0 :(得分:13)

fputs应该写一个以空字符结尾的字符串。一旦检测到'\0',它将停止。 You should use fwrite写二进制数据。

  fwrite(mona, 1, sizeof(mona), fp);

答案 1 :(得分:2)

使用fwrite代替fputs

fputs用于将字符(非二进制)数据写入文件。

答案 2 :(得分:1)

你必须在fopen上使用fwrite AND 二进制标志,比如

fopen("blah.bin","wb");

如果你不使用“b”,你的所有文件操作都将使用fwrite以text-modus(标准)工作。