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平台,这将写出字节0x390x300x000x00。假设使用ASCII编码,0x39是字符'9'的ASCII代码,而0x30是字符'0'的ASCII代码,因此您可以在文件中看到90
其他两个0x00字节要么被忽略,要么被用于可视化文件的任何内容替换为空格。

关于c - fwrite未格式化的数据写入un预期的整数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25518766/

10-13 08:22