文件输出问题
我想在output.txt中写一个整数123456789
用了两种方法
1、
#include <stdio.h>
int main()
{
FILE* fp;
fp = fopen( "output.txt ", "w ");
int i = 123456789;
fwrite(&i,4,1,fp);
fclose(fp);
return 0;
}
2、
#include <stdio.h>
int main()
{
freopen( "output.txt ", "w ",stdout);
int i = 123456789;
printf( "%d ",i);
fclose(stdout);
return 0;
}
第一种方法用记事本打开时是乱码,而第二种方法可以正确的达到目的,这是为什么呢?两种方法有什么区别呢?
[解决办法]
第一种方法你写进去的是123456789;
而而第二种方法写进去的是 "123456789 ".
[解决办法]
fwrite(&i,4,1,fp);
==》
fprintf(fp, "%d ", i);
[解决办法]
fwrite 需要使用 二进制方式操作文件,
你使用文本方式打开,
请使用 fprintf 函数 ~
[解决办法]
fwrite只输出二进制流,忠实的输出你给它的数据。在你的例子里,你给fwrite的是4个字节,fwrite就忠实地把这四个字节分别写到了文件、标准输出里。至于你看到的,只不过是终端、记事本的显示方式而已。如果愿意,你可以用16进制去看它们。
123456789(10)=75bcd15(16)所以你写的时候就是写了15,cd,5b,07(字节序),