while循环中的scanf()。在%不起作用之前放置一个空格

时间:2016-02-26 17:33:00

标签: c

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:”。这是为什么?

2 个答案:

答案 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

相关问题