嗨,只是得到一些奇怪的输出,试图将输入作为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
在fsacnf
和printf
语句中将说明符更改为%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
所以根据我声明i
是int
然后打印它。
2.另外你应该经常检查fopen
返回,所以检查一下。
以上就是c/c++开发分享C,从文本文件中读取双精度值相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522892.html