gpt4 book ai didi

c - 如何通过 fscanf 制作矩阵?

转载 作者:太空宇宙 更新时间:2023-11-04 03:17:02 24 4
gpt4 key购买 nike

我想使用“fscanf”制作一个矩阵。我已经制作了一个txt文件,并打开了它。但是,我不知道为什么它不起作用。

int main(void)
{
FILE *filter;
double coeffs[61];

filter = fopen("coeffs_fir.txt", "r");

if (filter == NULL) {
puts("can't open it");
return -1;
}

for (int i = 0; i <61; i++) {
fscanf(filter, "%e", &coeffs[i]);
printf("%e ", coeffs[i]);
}
fclose(filter);
system("pause");
return 0;
}

当我运行这段代码时,结果是 -9.255963e+61 -9.255963e+61 -9.255963e+61 -9.255963e+61 -9.255963e+61 ..... 然后按任意键。

txt文件是指数数组,如-9.460415e-18。-9.255963e+61 在我的 txt 文件中不存在。

有些人说使用“%lf”而不是“%e”,但这是行不通的。

最佳答案

您的代码大部分是正确的,除了以下几点:您使用的是 double 类型,但是 fscanfprintf 的格式字符串期望 float 类型。许多编译器会发出这样的警告:

test.c:17:24: warning: format '%e' expects argument of type 'float *', but argument 3 has type 'double *' [-Wformat=]
fscanf(filter, "%e", &coeffs[i]);

因此,只需在 % 之后添加 l 来修复这两行:

fscanf(filter, "%le", &coeffs[i]);
printf("%le ", coeffs[i]);

注意:我确实测试了上面的代码,它有效(gcc(Ubuntu 5.4.0-6ubuntu1~16.04.9)5.4.0 20160609)。

关于c - 如何通过 fscanf 制作矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50508104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com