Функция не может запускаться несколько раз - PullRequest
0 голосов
/ 07 ноября 2018

ниже - это функция, которую я вызвал для чтения файла и сохранения в моем связанном списке

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

эта функция работала при запуске в первый раз, но при втором запуске она выдает ошибку, и я уверен, что в первый раз она сможет прочитать все данные. Почему и как это улучшить?

...