私は奇妙な問題に直面しています。後で使用されないint
を宣言すると、セグメント化エラーが発生します。宣言を削除すると、コードは完全に実行されます。どうすればいいの?未使用変数を含むセグメンテーションフォールト
FILE* ptr = fopen("prueba.txt", "r");
int x;
char* a;
int y = 0; //this cause the seg fault.
do{
while (fscanf(ptr, "%i", &x)!=-1){
fscanf(ptr, "%s", a);
printf("%i %s ",x, a);
}
fseek(ptr, 0, SEEK_SET);
}while(1);
fclose(ptr);
}
しかし、私はそれを使用している場合でも、printf
後、私はまだセグメンテーションフォールトを取得しています、y++;
と言います。
fscanf(ptr、 "%s"、a);これは問題のようです。 aはmallocされていません – CIsForCookies
'fscanf(ptr、"%s "、a);'はランダムなメモリを上書きします。変数を追加することによって、どのランダムメモリが暴走するかを変更することになります。 – Art
@Art、あまりにも短い回答はコメントに自動変更されます。回答がAnswersセクションに表示されるようになると、この質問が「未回答」セクションに永久に表示されなくなります。 – CDahn