簡體   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