0

既に動作しているプログラムがあり、使用されている 4 つの配列を 1 つに変更する必要があるため、typedef 構造体を使用して、stuff というデータ型を作成しました。次に、すべてと呼ばれるデータ型のものの配列を作成しました。すべてに 4 つの配列が含まれています。

typedef struct structure
{
char names[13][9];
int scores[13][4];
float average[13];
char letter[13];
} stuff;

プログラムの後半で、 fopen は次のように呼び出されます。

FILE *student, *score;
student = fopen("student.dat", "r");
score = fopen("scores.dat", "r");

fscanf はその少し後に使用されます。

for(i=0; i<13; i++)
{
    for(j=0; j<4; j++)
    {
    fscanf(score, "%d", everything[i].scores[i][j]);
    }
}
fclose(score);

プログラム全体を終了した後もセグメンテーション違反が発生し続け、それがどこから来ているのかわからなかったので、すべてをコメントアウトし、コメントを少しずつ解除して、セグメンテーション違反がどこで発生し始めたかを確認しました。ここで再びポップアップし始めましたが、その理由はわかりません。修正するにはどうすればよいですか?

4

2 に答える 2

3

この行に誤りがありますfscanf(score, "%d", everything[i].scores[i][j]);

これを使った方がいい

fscanf(score, "%d", &everything[i].scores[i][j]);. &あなたはこの行を忘れています。mem addressスキャン値を保存するように指示する必要があります。

于 2013-04-23T04:36:18.670 に答える
1

私が収集できる問題は、すべてに構造体の13個のインスタンスが含まれていないため、forループを通過しようとすると、メモリ内の関連する場所を見つけてデータを保存できないということです。

于 2013-04-23T04:39:37.767 に答える