在scanf(%d)中输入非整数时,while循环会无限期地运行

时间:2019-06-13 01:24:58

标签: c++ input while-loop scanf

我当时正在为我的计算机科学课编写一个程序,我想制作一个菜单,该菜单会重复一次,每次都要求输入新的信息。

当我输入一个整数值时,这可以正常工作。但是,当我输入一个字母值(例如“ a”)时,尽管我希望防止scanf()无限循环,但while循环开始无限循环地运行。我知道我没有在循环中休息,但是我只是想弄清楚输入非整数值时如何处理无限循环。这是我的代码:

while (1) {

    printf("Select one of the following:\n[1] Product Management\n[2] File Creation\n[3] Exit Program\n");
    int op1 = 0;
    cout << op1 << endl;
    scanf("%d", &op1);
    if (op1 != 1 || 2 || 3) {
        cout << "Please enter one of the options provided." << endl;
    }
}

我希望此操作在重复一次后在scanf()处停止,但是当输入非整数值时,它将无限期地运行。我是编码新手,感谢您的提前帮助

0 个答案:

没有答案