ввод fscanf с плавающей точкой - PullRequest
8 голосов
/ 02 марта 2011

Я читаю из текстового файла, который содержит:

Mary 55334422 24.90 56.6 45.68

и читаю это в:

....char name[20]; int num; double worked; double rate; double total;....

fscanf(fp, "%s %d %f %f %f\n", name, &num, &worked, &rate, &total);

Я получаю имя и целое число в порядке, но числа с плавающей запятой выглядят как -9522999990000000000000000000.00

Я что-то здесь не так делаю?

Ответы [ 3 ]

13 голосов
/ 02 марта 2011

Вам нужно использовать формат для двойного : %lf, а не для числа с плавающей запятой %f ... или заменить его на числа с плавающей запятой вместо двойных.

5 голосов
/ 02 марта 2011

Попробуйте lf вместо f для анализа двойных переменных:

fscanf(fp, "%s %d %lf %lf %lf\n", name, &num, &worked, &rate, &total);
1 голос
/ 02 марта 2011

Измените двойные числа на числа с плавающей запятой или измените формат на% lf

...