【发布时间】:2016-10-02 15:35:39
【问题描述】:
感谢您的关注。我有一个 .dat 文件,格式如下:
3 10.9
1 2.1
(empty line)
10 10.05
10 200
对于每一行,我想将第一个数字(整数)存储到变量a中,并将第二个浮点数存储在变量中
int c;
FILE *fp = fopen("supermarket.dat", "r");
while ((c = fgetc(fp)) != EOF) {
int var1;
float var2;
fscanf(fp, "%d%f", &var1, &var2);
printf("%d\n", var1);
printf("%f\n", var2);
}
现在我的程序没有错误,但所有数据都是错误的。 CMD 中的输出为:
10
0.900000
1
2.10000
10
10.050000
10
200.0000000
10
200.000000
如您所见,有些数据是错误的,它没有将空行打印为 0 0。 正确的输出应该是:
3
10.9
1
2.1
0
0
10
10.05
10
200
【问题讨论】:
-
你的 while 循环没有意义。
-
什么是运行时错误?
-
混合 "%lf" 和
float也不是幸福生活的秘诀 -
我的循环确保读取文件直到最后一个数据,不是吗?
-
@kdopen 抱歉。在我将 %lf 更改为 %f 之后。没有错误。但是还是有一些问题。问题已编辑。
标签: c file floating-point scanf