数组分段错误

时间:2012-11-24 11:03:05

标签: c++ arrays segmentation-fault fstream

我遇到了分段错误的问题。 看:

#include<fstream>
using namespace std;
int main(){
    int n,i,vector[10001],vectorcopy[10001];
    ifstream in("program.in");
    ofstream out("program.out");
    in>>n;
    for(i=1;i<=n;i++){
        in>>vector[i];
        vectorcopy[i]=vector[i];
    }
    return 0;}

调试器说: 程序恢复信号SIGSEGV,分段故障

请告诉我该怎么做!

1 个答案:

答案 0 :(得分:3)

如果输入文件program.in正确,您的程序(大部分)正常工作。我认为您的分段错误错误是由以下原因引起的:

  • 输入错误
  • 程序中缺少输入检查

这个program.in输入文件没有错误:

10
1
2
3
4
5
6
7
8
9
10

其他错误

我说“大多数”因为你的程序中还有一些其他错误。他们现在没有造成麻烦(C ++称之为“未定义的行为”),但他们迟早会:

  • 对于大小为n的数组,索引从0开始,到n - 1结束;使用数组时,不要像这样编写for语句:

    for (i = 1; i <= n; i++)
    

只需将其重写为:

    for (i = 0; i < n; i++)
  • 您没有使用vectorcopy数组
  • 您没有在program.out输出文件
  • 上写任何内容