C 程式接受字母作為整數輸入時出現無限循環問題
當程式需要整數輸入,但使用者輸入時,會出現此問題而是一封信。由於輸入流中存在意外字符,程式進入無限循環。這會導致連續顯示訊息「您輸入的數字為負數。請輸入正數以繼續。」沒有提供使用者輸入有效數字的機會。
說明
此問題的根本原因在於 C 輸入流的行為。當使用者輸入非數字字元時,輸入流的“failbit”標誌被設定。然而,流並沒有被清除,因此程式仍然停留在同一個循環迭代中,嘗試重複讀取無效字元。
解決方案
解決此問題,有必要實施適當的輸入驗證和錯誤處理。以下是如何解決此問題的範例:
#include <iostream> #include <limits> // ... (remaining code) cout << "\nPlease enter a positive number and press Enter: \n"; 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);
在此修改後的程式碼中:
以上是為什麼字母輸入會導致我的 C 程式死循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!