jinx的本子:为什么输出结果不对

来源:百度文库 编辑:神马品牌网 时间:2024/04/19 03:52:34
#include <stdio.h>
main()
{
int x,y,z;
FILE *fp;
for(x = 0;x < 50;x++)
for(y = 0;y< 50;y++)
for(z = 0;z <= 50;z++)
{
if(x * x + y * y + z *z == 2000)
{
if( (fp = fopen("f3","w")) == NULL)
{
printf("error");
exit(0);
}
fwrite(&x,sizeof(int),1,fp);
fwrite(&y,sizeof(int),1,fp);
fwrite(&z,2*sizeof(int),1,fp);
}
}
}

这样open文件 fp = fopen("f3","w")
应当用 fprintf(fp,"%d %d %d ",x,y,z); 的方法存为ASCII文件.

若用二进制存放,
open文件 fp = fopen("f3","wb")
下次读数据要用 "rb" open

fwrite(&z,2*sizeof(int),1,fp);
应当用 fwrite(&z,sizeof(int),1,fp); 不乘2

fwrite(&x,sizeof(int),1,fp);
fwrite(&y,sizeof(int),1,fp);
fwrite(&z,2*sizeof(int),1,fp);
输入出的内容并不是按十进制显示的,而是写到文件的数值按照字符的形式给存起来了,并不是你写的是整数100在文件里就存有整数100,它是按照100的ASCII形式来存储的。不用担心文件里存的字符当你再读回去的时候数值是不会变的。另外想要得几组数据的话打开方式应该用追加的-fopen("f3","a")
输出的结果: ',' 对应 44 ''对应 8
而44*44+8*8+0*0=2000(这只是其的一组数据)
,    ,   (  (  ( ,  ,  ,  , ,  (  (  (  (  ( (  (       ( (            (  (  (   (   ,  ,  

晕,那国的文字哦

C语言忘记的差不多了哦