首頁 >後端開發 >C++ >在 C 中輸入整數時如何防止無限循環?

在 C 中輸入整數時如何防止無限循環?

Linda Hamilton
Linda Hamilton原創
2024-12-03 04:23:10750瀏覽

How to Prevent Infinite Loops When Taking Integer Input in C  ?

字元輸入的無限循環問題

執行提供的程式碼時,如果輸入非整數位元符而不是輸入,則會發生無限循環一個數字。此行為是在正數驗證過程中出現的。

具體來說,問題在於檢查 num1 有效性的內部 while 迴圈。如果輸入字母字符,則 cin >>> num1 語句失敗,設定失敗位標誌。但是,cin 緩衝區未清除,導致錯誤地假設相同的無效輸入仍然存在。

修復問題

要解決此問題,需要額外的邏輯需要處理無效輸入並清除cin緩衝區:

    do {    
        while(!(cin >> num1)) {
            cout << "Incorrect input. Please try again.\n";
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
        }
        if(num1 < 0) cout << "The number you entered is negative. Please enter a positive number to continue.\n";
    } while(num1 < 0);

在這個修改後的程式碼中,使用了一個外部do-while迴圈來不斷提示等待輸入,直到輸入有效的正整數。

輸入無效字元後,呼叫 cin.clear() 重設failbit 標誌。隨後,cin.ignore() 用於丟棄輸入緩衝區中的所有剩餘字符,包括無效字符以及可能跟隨的任何空格或換行符。 numeric_limits::max() 參數指定忽略下一個換行符之前的所有字元。

透過這些調整,程式碼可確保僅處理有效的整數輸入,並在非以下情況下避免無限迴圈:輸入整數位符。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn