繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM