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

时间:2015-09-02 06:22:28

标签: 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;
    }

2 个答案:

答案 0 :(得分:4)

想出来,%f中的fscanf应为%lf

答案 1 :(得分:3)

%lffsacnf语句中将说明符更改为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 

因此,据我所知,iint,然后将其打印出来。

2.另外,您应该始终检查fopen的返回,请检查它。