我如何在C中使用fscanf从.txt文件读取浮点数[关闭]

问题描述 投票:0回答:1
#include <stdio.h> #include <stdlib.h> #include <math.h> #define n 100 int main() { double z[n]; double k[n]; int num_comp; FILE *input = fopen("input.txt", "r"); fscanf(input, " %d [^\n] ", &num_comp); printf("%d\n", num_comp); for (int i = 0; i<num_comp; i++) { fscanf(input, " %lf %lf [^\n] ",&z[i], &k[i]); } printf("%lf\n", k[0]); printf("%lf\n", k[1]); printf("%lf\n", k[2]); printf("%lf\n", k[3]); fclose(input); }

这是输入

4 0.1 6.8 0.3 2.2 0.4 0.8 0.2 0.052
当我打印num_comp时它是正确的,因为我得到4,问题是当我打印z [i]或k [i]以检查它们的值时,我总是得到0.0000,而不是input.txt中的十进制值
c file scanf
1个回答
0
投票
我更改了已简化的fscanf的格式参数,并如下所述添加了对输入文件存在性的测试。

#include <stdio.h> #include <stdlib.h> #include <math.h> #define n 100 int main() { double z[n]; double k[n]; int num_comp; FILE *input = fopen("input.txt", "r"); if (input == NULL) { printf ("File 'input.txt' doesn't exist\n"); exit (1); } fscanf(input, "%d", &num_comp); printf("%d\n", num_comp); for (int i = 0; i<num_comp; i++) { fscanf(input, "%lf %lf",&z[i], &k[i]); } printf("%lf\n", k[0]); printf("%lf\n", k[1]); printf("%lf\n", k[2]); printf("%lf\n", k[3]); fclose(input); }

这有效。

为了避免不可预测的结果而需要添加num_comp <= n的测试。

© www.soinside.com 2019 - 2024. All rights reserved.