当前位置: 代码迷 >> C语言 >> [求助]如何使用fread
  详细解决方案

[求助]如何使用fread

热度:300   发布时间:2006-06-27 14:08:06.0
但是,为什么取实数时不对呢?
我想将一个已经有很多数据的文件中的数据一个个取出来放到一个数组中,
我该怎么做啊?
刚才试了半天,
用fscanf和fread都没成功
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-27 07:43:04
mhl0002

等 级:等待验证会员
帖 子:27
专家分:0
注 册:2006-4-22
  得分:0 

我的程序是这样的:

# include "math.h"
# include "stdio.h"
void main()
{
float num[10];
float a;
int i;
FILE *ff,*fp;
ff=fp=NULL;

ff=fopen("e:\\test01.txt","w");
a=0;
for(i=0;i<=9;i=i+1)
{
a=a+10.0;
num[i]=a;
printf("%f",num[i]);
fprintf(ff,"%f",a);
}
fclose(ff);

fp=fopen("e:\\test01.txt","rb");
for(i=0;i<=9;i=i+1)
fread(&num[i],sizeof(float),1,fp);
fclose(fp);

for(i=0;i<=9;i=i+1)
printf("num=%f \n",num[i]);
}

打印结果全部是0。
这样生成的文件里是不是二进制实数?
我也不是很懂。
呵呵。


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-27 08:08:27
穆扬

等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
  得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-27 08:12:14
mhl0002

等 级:等待验证会员
帖 子:27
专家分:0
注 册:2006-4-22
  得分:0 

哦,是这样啊。我去试一试fwrite


----------------解决方案--------------------------------------------------------
啊!我成功了。

将原程序中的
printf("%f",num[i]);
fprintf(ff,"%f",a);
改为
fwrite(&a,sizeof(float),1,ff);
就可以了。
原来问题出在二进制形式这儿。

谢谢你啊。




----------------解决方案--------------------------------------------------------
我去看了你推荐的这几个帖子,棒极了。
原先我用fread和fscanf搜没找到。
原来在这儿呢。

谢谢你。
----------------解决方案--------------------------------------------------------