1

次のコードでは、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); 
4

1 に答える 1

3

ループの最初の繰り返しは、設定によって終了します

temp=NULL;

NULL内部の2回目の反復の開始時に逆参照します

fscanf (file, "%d", &temp->num);

コードはどのようtempに割り当てられたかを示していないため、NULL を停止するか、新しいインスタンスを割り当てるかを判断するのは困難です。

于 2013-11-15T07:58:05.267 に答える