fscanf上的分段错误(核心转储)

时间:2013-11-15 07:56:51

标签: c gcc segmentation-fault scanf

以下代码在fscanf的for循环的第二次迭代中给出了一个分段错误,可能是什么问题?是fflush(stdin)在这里正确使用???还是有另一个原因。 代码应该创建一个NODE类型的数组,每个索引都包含一个链接列表,其中包含32个从file.txt读取的整数节点

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); 

1 个答案:

答案 0 :(得分:3)

循环的第一次迭代通过设置

结束
temp=NULL;

您在

内的第二次迭代开始时取消引用NULL
fscanf (file, "%d", &temp->num);

您的代码未显示temp的分配方式,因此很难说您是应该停止对其进行NULL还是分配新实例。