Scanf为变量分配“垃圾”值

时间:2012-07-23 22:27:13

标签: c scanf

我试着编写一个简单的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函数显示非常奇怪的值 - 与我输入的值完全不同。

我用我想到的每一种可能的方式搜索它,我似乎无法找到它发生的原因。

有人可以试图弄清楚它为什么会发生吗?

2 个答案:

答案 0 :(得分:4)

使用lf转换说明符来读取double值,而不是f转换说明符,它是读取float值的指定值。 fscanffprintf函数在这方面并不对称。

答案 1 :(得分:0)

您必须使用%lf%g来提取双打,而不是%f