调试代码在计算机上运行正常但在SPOJ上运行不正常

时间:2014-01-03 13:29:37

标签: c++ debugging segmentation-fault

此代码在我的计算机上正常工作,但SPJ告诉我它有一个分段错误。你能帮我调试吗?

#include <iostream> 
using namespace std;
int main() {
    int i, arr[5];
    int j = 0;
    for (i = 0; i<5; i++) 
    {
        cout << "Enter number between 0 to 99 \n";
        cin >> arr[i]        
    }

    while (arr[j] != 42) { 
        cout << arr[j] << "\n";
        j++;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

你的循环:

while (arr[j] != 42) { 
  cout << arr[j] << "\n";
  j++;
}

只有在有人输入42时才会退出。如果没有,则j将增加到5及更高,这意味着您将尝试访问不存在的数组索引,如{{ 1}}只有5个元素。

在您重复项目时,一个问题是检查arr

j