首页 > 后端开发 > C++ > 为什么字母输入会导致我的 C 程序死循环?

为什么字母输入会导致我的 C 程序死循环?

DDD
发布: 2024-12-04 02:37:11
原创
382 人浏览过

Why Does Letter Input Cause an Infinite Loop in My C   Program?

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);
登录后复制

在此修改后的代码中:

  • while 循环已封装在 do-while 循环中,确保至少即使初始输入无效,也会执行一次。
  • 在内循环内部,使用 cin.fail() 实现正确的输入验证
  • 如果检测到无效输入,则会显示错误消息,并清除并忽略 cin 缓冲区,以防止其影响后续输入尝试。
  • 然后提示用户重新输入-输入一个有效的整数。
  • 此过程将继续,直到用户输入一个正整数。

以上是为什么字母输入会导致我的 C 程序死循环?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板