c语言 - 尝试使用链表运行程序并接收"Segmentation Fault 11"



我当前正在尝试编写一个读取文件,第一个数字的程序(这将指示文件中有多少行),然后使用链接列表,分配节点的值(结构)。分配它们后,该程序将打印结果。但是,运行程序时,它会输出"分割故障11"。这是我的程序:

#include <stdio.h>
#include <stdlib.h>
struct node
{
            int day;
            int month;
            int year;
            char info[100];
            struct node *next;
};
 int main(int argc, char* argv[])
 {
      FILE* inFile = fopen(argv[2], "r");
      int checking, amount, i;

      checking = fscanf(inFile, "%dn", &amount);
      if (checking != 1)
      {
              printf("Error reading the 1st line");
      }
      int amountupdated = (amount-1)/2;
      typedef struct node NODE;
      NODE *head, *first, *temp, *current, *previous = 0;
      head = (NODE *)malloc(sizeof(NODE));
      current = head;
      previous = NULL;
      for(i=0; i<amountupdated; i++)
      {
              fscanf(inFile, "%d%d%dn", &current->day, &current->month, &current->year);
              fgets(current->info, 100, inFile);
              printf("%d-%d-%d: %s", current->year, current->month, current->day, current->info);
              previous = current;
              current = (*current).next;
      }
}

有人可以向我解释我的记忆错误在哪里。预先感谢您。

this:

          current = (*current).next;

根本没有任何意义,您只能分配一个节点,但似乎希望该程序能够迭代多个节点。相反,由于您正在遵循非初始化的指针,因此您会获得不确定的行为。

您将不得不致电malloc()一次以分配每个节点,然后将它们全部链接起来。

顺便说一句,(*current).next通常是书面的current->next

相关内容

  • 没有找到相关文章