#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中的十进制值
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
的测试。