fscanf读入双数组奇怪值

时间:2011-11-05 06:52:15

标签: c arrays double scanf

以下代码旨在从文件中读取双精度并将它们放入数组中。很简单。

double arr[100];
int i = 0; 

while(fscanf(fin, "%lf", &arr[i]) != EOF) 
    i++;

然而,当我打印数组时,我得到了奇怪的值。如果我用常规的双变量替换数组变量,并且在前面提到的while循环中打印出这个变量的值,它就会正确打印出来。提到的代码有什么问题?我事先尝试初始化数组中的所有值,但是,当然,这也无济于事。

1 个答案:

答案 0 :(得分:1)

您可能希望在数组周围使用括号。例如,在代码中,您有"& arr [i]"。这与(& arr)[i]相同,这意味着获得偏移量为i的数组指针(指向指针的指针)的地址。这可以将文字偏移几位,这使得输出看起来很时髦。

添加括号使其如下:"&(arr [i])"

double arr[100];
int i = 0; 

while(fscanf(fin, "%lf", &(arr[i])) != EOF) 
    i++;