读书人

文件输出有关问题

发布时间: 2012-02-21 16:26:23 作者: rapoo

文件输出问题
我想在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(字节序),

读书人网 >C语言

热点推荐