首頁 > 後端開發 > C++ > 在C中輸入非數字值時如何防止無限迴圈?

在C中輸入非數字值時如何防止無限迴圈?

Barbara Streisand
發布: 2024-12-13 12:45:10
原創
233 人瀏覽過

How to Prevent Infinite Loops When Inputting Non-Numeric Values in C  ?

輸入字母而不是數字時無限循環

當遇到字元輸入而不是整數時,提供的程式碼陷入無限循環,同時顯示訊息「您輸入的數字為負數。請輸入正數以繼續。」發生這種情況的原因如下:

問題:

當cin 流遇到無效輸入(本例為字元)時,無法正確處理。它使流處於錯誤狀態,稱為設定“failbit”標誌。

解決方案:

要解決此問題,請執行以下步驟:

  • 讀取數字時檢查輸入是否成功(使用cin和流操作運算子>>):

    while (!(cin >> num1)) {
        cout << "Incorrect input. Please try again.\n";
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
    登入後複製
  • 如果cin 失敗則清除流並忽略錯誤的輸入字元(使用clear()和ignore()):

    • cin.clear() 清除“failbit” flag.
    • cin.ignore(numeric_limits::max(), 'n') 從流緩衝區中刪除所有字符,直到並包括下一個換行符 ('n')。

透過執行這些步驟,程式將偵測無效輸入,清除流,並提示使用者輸入正整數,讓程式繼續執行,不會出現無限迴圈。

以上是在C中輸入非數字值時如何防止無限迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板