fscanf用浮点数输入

rac*_*ach 8 c scanf

我正在阅读一个文本文件,其中包含:

Mary 55334422 24.90 56.6 45.68
Run Code Online (Sandbox Code Playgroud)

我正在读它:

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

fscanf(fp, "%s %d %f %f %f\n", name, &num, &worked, &rate, &total);
Run Code Online (Sandbox Code Playgroud)

我得到的名称和整数很好,但浮点数出现像-95229999900000000000000000000000.00

我在这里做错了吗?

mar*_*ton 15

您需要使用double格式:%lf而不是float 的格式%f ...或者更改为浮点数而不是双精度数.


Pab*_*ruz 5

尝试lf而不是f解析成双变量:

fscanf(fp, "%s %d %lf %lf %lf\n", name, &num, &worked, &rate, &total);
Run Code Online (Sandbox Code Playgroud)