C++程序在输入超过一定行时不能工作

C++程序在输入超过一定行时不能工作,c++,xcode,C++,Xcode,这是我的密码: #include <iostream> int main(int argc, const char * argv[]) { int size = 0; int numbers[10000]; while (scanf("%i", &numbers[size]) != EOF) { size++; } //some other functions... return 0; } 它是为了解决

这是我的密码:

#include <iostream>
    int main(int argc, const char * argv[]) {
    int size = 0;
    int numbers[10000];
    while (scanf("%i", &numbers[size]) != EOF) {
        size++;
    }
    //some other functions...
    return 0;
}
它是为了解决竞争编程的一个问题,当输入1000多行代码进行调试时,它只是停留在那里,永远不会结束。但是,如果我只输入相同输入的一部分,少300行,它就正常工作了。有什么想法吗?我正在使用Xcode。

返回它能够填充的数字变量-但是,如果您输入scanf无法解析的某些字符,它甚至可以为0。但是,如果发生这种情况,scanf将一直尝试重新读取一个相同的输入,从而导致无休止的循环

请尝试以下示例:

for(int i = 0; i < 10; ++i)
{
    int n;
    int r = scanf("%d", &n);
    printf("%d / %d\n", r, n);
    fflush(stdout);
}
输入一些数字,然后输入一个非十进制的e。G7.8 x


所以更喜欢while scanf%i,而不是&numbers[size]==1。

非主题:为什么scanf而不是while std::cin>>numbers[size++;?您的示例使用scanf,但不包括适当的头。它甚至不应该成功编译。看看第300行附近的实际输入,或者行为发生变化的任何行,看看它是否有效。