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 ++ではこれを「未定義動作」と呼んでいます)が、遅かれ早かれ次のようになります。

  • サイズの配列の場合、インデックスは0で始まり、 ;nで終わります。配列を使用するときは、次のようにステートメントを記述n - 1しないでください。for

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

次のように書き直してください。

    for (i = 0; i < n; i++)
  • vectorcopyアレイを使用していません
  • program.out出力ファイルには何も書き込んでいません
于 2012-11-24T11:12:15.870 に答える