函数无法多次运行

时间:2018-11-07 14:58:17

标签: c function linked-list structure

下面是我调用的用于读取文件并将其存储到链接列表的函数

void getList(struct List **head)
{
  struct List *navigator = *head;
  FILE *fptr;

  fptr = fopen("list.txt", "r");

  for(int i = 0; i < MAX; i ++)
  {
    struct List *temp = malloc(sizeof(struct List));

    fscanf(fptr, "%d %s %s %s %d %d %d %d\n", &temp->id, temp->name, temp->type, temp->desc, &temp->point1, &temp->point2, &temp->point3, &temp->point4);

    if(navigator->next == NULL)
      navigator->next = temp;
    else
    {
      while(navigator->next != NULL)
        navigator = navigator->next;

      navigator->next = temp;
    }
  }

  rewind(fptr);
  fclose(fptr);
}

下面是我构建的结构列表

struct List
{
  int id;
  char name[30];
  char type[6];
  char desc[7];
  int point1;
  int point2;
  int point3;
  int point4;
  int point5;
  struct List *next;
};

我调用该函数以读取下面的数据

1 cabbage vege green 1 2 3 4
2 cucumber vege green 2 4 6 8
3 celery vege green 3 4 5 6

该函数在第一次运行时有效,但是当我第二次运行时它将出现错误,并且我确信它第一次能够读取所有数据。 为什么以及如何进行改进?

0 个答案:

没有答案