你只是得到了一些奇怪的输出,试图将输入作为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;
}
答案 0 :(得分:4)
想出来,%f
中的fscanf
应为%lf
答案 1 :(得分:3)
在%lf
和fsacnf
语句中将说明符更改为printf
。像这样 -
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
因此,据我所知,i
为int
,然后将其打印出来。
2.另外,您应该始终检查fopen
的返回,请检查它。