為什麼輸入字母而不是數字時程式會無限循環?
嘗試在 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中文網其他相關文章!