为什么输入字母而不是数字时程序会无限循环?
尝试在 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中文网其他相关文章!