[英]scanf() in while loop. Put a space before % doesn't work
double bet = 0;
do
{
printf("How much would you like to bet? The minimum bet is $5.00: ");
scanf(" %.2lf",&bet);
} while (bet < 5);
我的scanf只取值一次,并进入无限循环。 我读了很多文章,发现解决此问题的一般方法是在%之前加一个空格。 我这样做了,但是问题仍然存在。 假设它首先读取bet = 4,并且应该让我再输入一个数字,但它只会继续打印“您想下多少赌注?最低下注为$ 5.00:”。 这是为什么?
问题是您的scanf
格式字符串。 您的编译器可能已对此发出警告。 的.
不允许。 结果, scanf
调用返回0
,并且不占用任何字符。
尝试将其更改为此:
double bet = 0;
do {
printf("How much would you like to bet? The minimum bet is $5.00: ");
scanf(" %lf", &bet);
} while (bet < 5);
检查scanf
的返回值也是一个好主意。 它应该返回成功解码的值的数量。
您的代码中是否需要.2。 使用表示警告。 在代码中。 尝试将其删除。 然后工作正常。 即仅使用%lf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.