fscanf читает в двойной массив странные значения - PullRequest
2 голосов
/ 05 ноября 2011

Следующий код предназначен для чтения дубликатов из файла и помещения их в массив. Довольно просто.

double arr[100];
int i = 0; 

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

Однако, когда я печатаю массив, я получаю странные значения. Если я заменю переменную массива обычной двойной переменной и внутри ранее упомянутого цикла while выведите значение этой переменной, оно будет напечатано правильно. Что не так с упомянутым кодом? Я попытался инициализировать все значения в массиве заранее, но, конечно, это тоже не помогло.

1 Ответ

1 голос
/ 09 июня 2014

Возможно, вы захотите заключить в скобки массив. Например, в коде у вас есть «& arr [i]». Это то же самое, что (& arr) [i], что означает получение адреса указателя массива (указателя на указатель) со смещением i. Это может сместить записи на несколько битов, что сделает вывод более интересным.

Добавьте круглые скобки, чтобы сделать это так: "& (arr [i])"

double arr[100];
int i = 0; 

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