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行附近的实际输入,或者行为发生变化的任何行,看看它是否有效。