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
}
答案 0 :(得分:4)
fwrite
正在将表示整数12345的原始字节写入您的文件。
假设int
为32位,则此数字为十六进制0x00003039
。假设有一个小端平台,这会写出字节0x39
,0x30
,0x00
,0x00
。假设ASCII编码,0x39
是字符'9'
的ASCII码和0x30
字符的'0'
,因此您在文件中看到90
。 / p>
其他两个0x00
字节要么被忽略,要么用你用来可视化文件的空格替换。