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中文网其他相关文章!