c - fscanf 读入双数组奇怪值

标签 c arrays double scanf

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

double arr[100];
int i = 0; 

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

然而,当我打印数组时,我得到了奇怪的值。如果我将数组变量替换为常规 double 变量,并在前面提到的 while 循环中打印该变量的值,它会被正确打印。上述代码有什么问题?我尝试预先初始化数组中的所有值,当然,这也无济于事。

最佳答案

您可能需要在数组周围加上括号。例如,在代码中,您有“&arr[i]”。这与 (&arr)[i​​] 相同,表示获取偏移量为 i 的数组指针(指向指针的指针)的地址。这可能会将文字偏移几位,从而使输出看起来很古怪。

添加括号使其成为这样:“&(arr[i])”

double arr[100];
int i = 0; 

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

关于c - fscanf 读入双数组奇怪值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8018675/

相关文章:

mysql - 使用 whereor 和 where Laravel 5.4 对 sql 查询进行项目数组检查

c++ - C++ 中的 "=="有时会为相同的 double 给出不同的结果

php - 使用 (int) 和 (double) 一起截断小数时出错

c - STM32F4卡在I2C_CheckEvent()

java - 在 Android App 中编译 Latex 文档

c - 为什么这会打印 10 颗星?

java - Java 中的 == 和 .equals 有什么区别?

c - 如何接受未确定大小的字符串输入?

arrays - 如何为 NodeJS 创建一个返回带有动态键名的数组的函数?

php - 将包含科学计数法数字的字符串转换为 PHP 中的 double