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

3

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

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不能正确读取浮点数?

9
展示你的变量声明。 - Barmar
1
b和c是浮点数还是双精度数?您使用的操作系统/编译器是什么? - bkausbk
2
只要 b,cfloat 类型,而 a,d,t,qint 类型,它就应该能够正常工作。 - P0W
能够正确打开文件了吗? - BLUEPIXY
1个回答

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提供的额外信息会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接