C,从文本文件中读取双精度值

嗨,只是得到一些奇怪的输出,试图将输入作为C中的双值读取。当输入是整数时,不会发生这个问题,无论如何都要使它与double一起工作?

#include "stdafx.h" int main(void) { double a, b, c, d, i; FILE *inp; inp = fopen("C:\\Users\\student\\Documents\\Visual Studio2012\\Projects\\ConsoleApplication3\\test.txt", "r"); i = fscanf(inp, "%f %f %f %f", &a, &b, &c, &d); while (i != EOF) { printf("a = %f & %d \n", a, i); printf("b = %f & %d \n", b, i); printf("c = %f & %d \n", c, i); printf("d = %f & %d \n", d, i); printf("%d \n", EOF); i = fscanf(inp, "%f %f %f %f", &a, &b, &c, &d); } fclose(inp); return 0; } 

想通了, fscanf%f应该是%lf

fsacnfprintf语句中将说明符更改为%lf 。 像这样 –

 fscanf(inp,"%lf %lf %lf %lf", &a, &b, &c, &d); 

其他问题 –

1.此外, i被声明为double但在printf你使用说明符%d打印它,所以你传递了错误的参数 –

 printf("a = %f & %d \n", a, i); // similar in all printf's 

所以根据我声明iint然后打印它。

2.另外你应该经常检查fopen返回,所以检查一下。