我试着编写一个简单的c程序,用衍生物做一些事情,但这不是问题的关键: 当我运行程序时,它要求我输入一堆浮点值,但是无论我输入什么,scanf函数总是将“垃圾”值赋给变量,这里是代码:
double a, b, c, d, x, h;
printf("Please enter the coefficient of X cubed: ");
scanf("%3f", &a);
printf("\nPlease enter the coefficient of X squared: ");
scanf("%3f", &b);
printf("\nPlease enter the coefficient of X: ");
scanf("%3f", &c);
printf("\nPlease enter the free coefficient: ");
scanf("%3f", &d);
printf("\nPlease enter x: ");
scanf("%3f", &x);
printf("\nPlease enter the offset: ");
scanf("%3f", &h);
printf("%.3f %.3f %.3f %.3f %.3f %.3f", a,b,c,d,x,h);
我输入a,b,c,d,x和h的值,但printf函数显示非常奇怪的值 - 与我输入的值完全不同。
我用我想到的每一种可能的方式搜索它,我似乎无法找到它发生的原因。
有人可以试图弄清楚它为什么会发生吗?
答案 0 :(得分:4)
使用lf
转换说明符来读取double
值,而不是f
转换说明符,它是读取float
值的指定值。 fscanf
和fprintf
函数在这方面并不对称。
答案 1 :(得分:0)
您必须使用%lf
或%g
来提取双打,而不是%f
。