次のコードでは、fscanf での for ループの 2 回目の繰り返しでセグメンテーション違反が発生します。何が問題なのでしょうか? fflush(stdin) はここで正しく使用されていますか??? または別の理由があります。コードは NODE 型の配列を作成することになっており、各インデックスは、file.txt から読み取った 32 個の整数ノードを含むリンク リストを保持します。
FILE *file = fopen ("file.txt", "r");
int count =0;
int x=0;
for ( x=0; x<=312500; x++)
{
while (count <=32)
{
fscanf (file, "%d", &temp->num);
temp->ptr=NULL;
newNode = (NODE *)malloc(sizeof(NODE));
newNode->num=temp->num;
newNode->ptr=NULL;
if (first != 0)
{
last->ptr=newNode;
last=newNode;
count=count+1;
}
else
{
first = newNode;
last = newNode;
count=count+1;
}
fflush(stdin);
}
count =0;
array[x] = (NODE*) malloc(sizeof(NODE));
array[x]->ptr=first;
first->ptr=0;
first=NULL;
last->ptr=0;
last=NULL;
temp->ptr = 0;
temp=NULL;
fflush(stdin);
}
fclose (file);