Чтение% le из файла - PullRequest
       8

Чтение% le из файла

0 голосов
/ 03 марта 2019

Я пытаюсь прочитать 3 двойных из входного файла с помощью fscanf, но при попытке сделать это у меня возникает ошибка.Мой код выглядит следующим образом:

    FILE * infile = fopen(argv[1], "r");
    double r_d, r, c;
    fscanf(infile, "%le %le %le", r_d, r, c);
    fclose(infile);

Входной файл выглядит следующим образом:

1.000000e+00 1.000000e+00 1.000000e+00

Есть идеи, где я иду не так?Я точно знаю, что тип данных должен читаться как% le.

1 Ответ

0 голосов
/ 03 марта 2019

Для функций scanf требуется указатель на объекты, которые вы хотите заполнить значениями, поэтому:

fscanf(infile, "%le %le %le", &r_d, &r, &c);
//                            ^     ^   ^

будет гораздо лучшим началом.Без операторов address-of он, скорее всего, будет использовать текущее значение переменных (которые, если они имеют статическую длительность хранения, как они кажутся, будут произвольными) в качестве указателя для записи значений.Это вряд ли хорошо закончится: -)

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

...