首頁 > 後端開發 > C++ > 為什麼我的 C 程式在輸入非數字時會進入無限迴圈?

為什麼我的 C 程式在輸入非數字時會進入無限迴圈?

Mary-Kate Olsen
發布: 2024-12-10 10:18:11
原創
179 人瀏覽過

Why Does My C   Program Enter an Infinite Loop with Non-Numeric Input?

為什麼輸入字母而不是數字時程式會無限循環?

嘗試在 C 程式中輸入正整數時但如果不小心輸入了字母,可能會出現無限循環。此行為源自於輸入流 cin 處理字元的方式。

當輸入不正確(例如,字母而不是數字)時,cin 流會設定失敗位標誌並將不正確的輸入留在緩衝區中。後續嘗試使用 cin 讀取整數將繼續傳回不正確的輸入,導致無限循環。

要解決此問題,透過檢查錯誤並清除輸入緩衝區來正確處理不正確的輸入至關重要。以下是程式碼的修改版本,其中包含錯誤處理:

#include <iostream>
#include <limits>

int main()
{
    // Define variables
    int num1, num2, total;
    char answer1;

    do
    {
        // User enters a number
        cout << "\nPlease enter a positive number and press Enter: ";
        while (!(cin >> num1))
        {
            cout << "Incorrect input. Please try again." << endl;
            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." << endl;
    } while (num1 < 0);

    // Rest of the code goes here

    return 0;
}
登入後複製

在此更新的程式碼中, while (!(cin >> num1)) 循環一直運行,直到輸入有效整數。當偵測到不正確的輸入時,會顯示錯誤訊息,並使用 cin.clear() 和 cin.ignore() 清除輸入緩衝區。這確保了程式在處理錯誤後可以繼續正確讀取輸入。

以上是為什麼我的 C 程式在輸入非數字時會進入無限迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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