3

我有分段错误的问题。看:

#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,分段错误

请告诉我该怎么办!

4

1 回答 1

2

如果输入文件正确,您的程序(大部分)工作正常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输出文件写入任何内容
于 2012-11-24T11:12:15.870 回答