scanf / cin陷入循环中

问题描述 投票:1回答:1

我有一个C ++程序,可以根据给定的数组大小执行计算。它在小型阵列上工作正常,但在大型阵列上,scanf和cin卡住了,如果我输入任何非数字,它就会跳出评估错误计算的循环。

这里是重现问题的示例代码:-

#include <iostream>

using namespace std;
int main() {
    int N;

    cin >> N;
    int *X = new int[N];

    for(int i=0;i<N;i++){
        cout << "getting " << i << "th input \n";
        cin >> X[i]; // tried scanf too but i
    }

    cout << "Done\n";

    return 0;
}

当我像这样大笔输入时:-https://pastebin.com/PWmm9J7i

打印到]

getting 693th input

我多次运行程序,仍然得到相同的结果。我也用clang和gcc编译了它,但是它仍然停留在第693个输入处。

我正在使用Manjaro OS

我有一个C ++程序,可以根据给定的数组大小执行计算。它在小型阵列上工作正常,但在大型阵列上,scanf和cin卡住了,如果我输入任何非数字,它......>

c++ stdout stdin
1个回答
0
投票
cin卡住了,如果我输入任何非数字。这是预期的行为。要解决此问题,您需要检查cin的状态,如果它处于错误状态,请清除错误并使用错误的字符:
© www.soinside.com 2019 - 2024. All rights reserved.