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

标签 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 不能正确读取 float ??

最佳答案

问题的可能根源是不匹配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 提供的其他信息会有所帮助。

关于c - 使用 fscanf 从文件中读取数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051413/

相关文章:

c - 线程在 WIC 中(有时)返回错误

c++ - C++中的双指针数组

c - 使用 itoa 时未处理的异常

创建文件并将其附加到目录中

c - 用位域初始化结构常量数组

任何人都可以提供有关猴子修补/ Hook Ruby 字符串 #{} 进行插值的指导吗?

c - 如何协调两个进程之间的共享内存

c - 在 main 之前声明数组

c - 为列表中的每个元素分配一个指针

c - 通过调用另一个函数将指针移动到某个地址