免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8182 | 回复: 9
打印 上一主题 下一主题

求助:使用 fread() 不能读文件数据! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-31 10:25 |只看该作者 |倒序浏览
大家好!
我在RedHat Linux 9 下用vi写了一个测试文件读写的小程序,用来读文本文件中的数据(文本文件用vi编辑成*.txt格式),之后用gcc编译。没有提示错误,但是读不出数据。
关键代码如下:

  1. //数组用做缓冲区,接收文件中的浮点型数据
  2. float array[10];
  3. FILE* fp;
  4. //打开文件
  5. if((fp=fopen("/mnt/wind/temp/data.txt","r"))==NULL){
  6.       printf("Can not open file: %s\n","b.txt");
  7.       exit(0);
  8. }
  9. printf("file opened\n");
  10.                                                                                                                                                
  11. //fseek(fp,0,0);

  12. //如果读出数据不是10个,报错。----问题可能就出在这里了
  13. if(fread(array,sizeof(float),10,fp)!=10);
  14.      printf("read error!\n");

  15. //输出  
  16. int i;                                                                                                                                             
  17. for(i=0;i<10;++i){
  18.      printf("%f\t",array[i]);
  19.      if((i+1)%5==0) printf("\n");
  20. }
  21. fclose(fp);
复制代码


结果输出:
0.000000    0.000000  0.000003  0.000000   0.000000
0.000001    0.000016  0.000016  0.000000   0.000000

其中用于测试的文本文件中的数据大概如
45.23
25.15
...

还有一个现象就是,我如果用fwrite把一个数组中的数据写到一个新的文件中,
然后再用fread()读出,就没有问题。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-12-31 10:29 |只看该作者

求助:使用 fread() 不能读文件数据!

用fscanf吧。fread和fwrite读取的是实际的二进制码。

论坛徽章:
0
3 [报告]
发表于 2004-12-31 10:32 |只看该作者

求助:使用 fread() 不能读文件数据!

呵呵.sizeof(float).......
这样的数据你还是用fscanf吧.

论坛徽章:
0
4 [报告]
发表于 2004-12-31 12:24 |只看该作者

求助:使用 fread() 不能读文件数据!

sizeof(float)只有4啊

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-12-31 12:32 |只看该作者

求助:使用 fread() 不能读文件数据!

float型的数据是不能用vi编辑得到的

论坛徽章:
0
6 [报告]
发表于 2004-12-31 12:39 |只看该作者

求助:使用 fread() 不能读文件数据!

谢谢aero 和 assiss等网友,换成 fscanf() 后达到预期效果了。再次感谢!

论坛徽章:
0
7 [报告]
发表于 2005-02-21 16:20 |只看该作者

求助:使用 fread() 不能读文件数据!

编译的时候,为什么会发生下面的错误:

ld: Unsatisfied symbol "fscan" in file /u01/oracle/tmp/ccC1W58E.o
1 errors.
collect2: ld returned 1 exit status

论坛徽章:
0
8 [报告]
发表于 2005-02-21 22:48 |只看该作者

求助:使用 fread() 不能读文件数据!

楼上的你少写了一个字母!!

楼主也可以通过fwrite把预期的数字写入文件,这样再用fread就可以了。

论坛徽章:
0
9 [报告]
发表于 2005-02-22 11:16 |只看该作者

求助:使用 fread() 不能读文件数据!

搂主混淆了字符串和二进制,呵呵

论坛徽章:
0
10 [报告]
发表于 2005-02-24 16:20 |只看该作者

求助:使用 fread() 不能读文件数据!

楼主用fread读取没有问题的!!
fread本身就是读取一个二进制数组/结构体数据!
但是编辑的测试数据有问题!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP