輸入字母而不是數字時無限循環
當遇到字元輸入而不是整數時,提供的程式碼陷入無限循環,同時顯示訊息「您輸入的數字為負數。請輸入正數以繼續。」發生這種情況的原因如下:
問題:
當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()):
透過執行這些步驟,程式將偵測無效輸入,清除流,並提示使用者輸入正整數,讓程式繼續執行,不會出現無限迴圈。
以上是在C中輸入非數字值時如何防止無限迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!