请教一个fscanf和feof的问题

monobhu 2009-09-06 04:00:06
代码如下
#include <stdio.h>
main()
{
FILE *fp;
int a;
double b,c,d;
if ((fp=fopen("./1.txt","r"))!=NULL) {
while (!feof(fp)) {
fscanf(fp,"%d %f %f %f\n",&a,&b,&c,&d);
}
printf("%d %f %f %f\n",a,b,c,d);
fclose(fp);
}
}
问题是 似乎进到while里面后出不来了
1.txt文件为
1 1.0 2.0 3.0
看了半天了 都要晕了
谢谢了
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
logiciel 2009-09-07
  • 打赏
  • 举报
回复
读double要用“%lf".
logiciel 2009-09-06
  • 打赏
  • 举报
回复

while (!feof(fp))
{
int count = fscanf(fp,"%d %f %f %f\n",&a,&b,&c,&d);
if (count < 4) break;
}
zhihaining 2009-09-06
  • 打赏
  • 举报
回复
可能%f默认的是float,而float和double在内存里的存储格式是不同的。
monobhu 2009-09-06
  • 打赏
  • 举报
回复
三楼的同学是正解
用vi 看了输入文件 格式是有问题
可问题是为什么要用float
为什么double出来的会是0.0呢
zhihaining 2009-09-06
  • 打赏
  • 举报
回复
或者把fscanf里的那个\n去掉试试。
zhihaining 2009-09-06
  • 打赏
  • 举报
回复
我在linux下跑了一下。没问题啊,没卡住。只是把b,c,d改成float了,要不然都是0.0。

是不是你的文本文件是windows存的是\n\r?

你把输出放到循环里面看看发生了什么。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧