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
}
最佳答案
fwrite
正在将表示整数12345的原始字节写入文件。
假设int
是32位,这个数字是十六进制的0x00003039
。假设有一个小小的endian平台,这将写出字节0x39
,0x30
,0x00
,0x00
。假设使用ASCII编码,0x39
是字符'9'
的ASCII代码,而0x30
是字符'0'
的ASCII代码,因此您可以在文件中看到90
。
其他两个0x00
字节要么被忽略,要么被用于可视化文件的任何内容替换为空格。
关于c - fwrite未格式化的数据写入un预期的整数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25518766/