fwrite unformatted data写入非预期的整数?

时间:2014-08-27 04:06:19

标签: c file

Fwrite未格式化的数据写入非预期的整数?请帮助我理解为什么我得到90以下代码?

   #include<stdio.h>
   int main()
{ 
    int i=12345;
    FILE *fp;
    fp=fopen("data","w");
    fprintf(fp,"%d",i);// 12345 good 
    fwrite(&i,4,1,fp);// why 90? i am aspecting 12345 in file data?
    fwrite(0,4,1,fp);//12345 good
}

1 个答案:

答案 0 :(得分:4)

fwrite正在将表示整数12345的原始字节写入您的文件。

假设int为32位,则此数字为十六进制0x00003039。假设有一个小端平台,这会写出字节0x390x300x000x00。假设ASCII编码,0x39是字符'9'的ASCII码和0x30字符的'0',因此您在文件中看到90。 / p>

其他两个0x00字节要么被忽略,要么用你用来可视化文件的空格替换。