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只取值一次并进入无限循环。我看了很多帖子,发现解决这个问题的一般方法是在%之前加一个空格。我这样做了,但问题仍然存在。假设它首先读取赌注= 4,它应该让我再次输入一个数字,但它只是继续打印“你想打多少赌注?最低赌注是$ 5.00:”。这是为什么?
答案 0 :(得分:1)
问题是您的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
检查返回值也是一个好主意。它应该返回成功解码的值的数量。
答案 1 :(得分:0)
您的代码中是否需要.2。它显示警告作为使用。在代码中。尝试删除它。然后它工作正常。即仅使用%lf