使用fscanf从文件中读取数据流

时间:2013-08-05 05:54:19

标签: c

我需要从文件中读取数据,它看起来像:

0   1.8750  274.90  0   0   0
1   3.7500  370.50  0   1   0
2   7.5000  463.50  0   2   0

所以我用:

fscanf(p,"%d%f%f%d%d%d",&a, &b,&c,&d,&t,&q);

当我试图查看它是否正确读取时,我使用了:

printf("A %d",a);
printf("B %f",b);

输出:

A 0B -1.882607

那么,为什么fscanf没有正确读取浮点数?

1 个答案:

答案 0 :(得分:1)

可能的问题来源是不匹配fscanf()指令
  或
不完整 fscanf()阅读。可能是由于未打开的文件或意外的输入文本。

A 0B -1.882607
| || +--------- b value -1.882607
| |+----------- Letters B space
| +------------ a value 0
+-------------- Letters A space

确保您的变量属于以下类型:

int a,d,t,q;
float b,c;

检查fscanf()

的结果
int result = fscanf(p,"%d%f%f%d%d%d",&a, &b,&c,&d,&t,&q);
if (result != 6) {
  printf("Error, unexpected return value:%d\n", result);
}

OP的其他信息会有所帮助。