【发布时间】:2019-10-19 14:30:23
【问题描述】:
我正在尝试从文件中读取一个数组,然后将这些值分配给另一个数组。 我得到很多零和非常大的数字。
我尝试了不同的说明符,但它们仍然相同。 当没有赋值,只打印一个数组时,就不存在这样的问题
int n;
FILE * fo;
fo = fopen("f1.txt","r");
double complex mas[8];
double complex y[8];
int N = 0;
while (!feof(fo)) {
fscanf(fo, "%lf", &mas[N]);
printf("%lf ", mas[N]);
N++;
printf("%d ", N);
}
fclose(fo);
printf("\n N=%d\n", N);
for(n=0; n<N; n++)
{
y[n] = mas[n];
printf("%f %f\n", y[n], mas[n]);
}
【问题讨论】:
-
检查
fscanf()的返回值而不是feof()。例如while (fscanf(fo, "%lf", &mas[N]) == 1) { }。此外,仅当您声明mas[8]时文件的浮点数不超过8时,此方法才有效。 -
在打印
y[n]和mas[n]时使用%lf而不是%f。应该是printf("%lf %lf\n", y[n], mas[n]);还要检查fopen()的返回值。 -
@Achal
%f和%lf在printf中是等价的(打印complex时两者都是错误的) -
仍然与 %lf 或 %f 相同