下面是我调用的用于读取文件并将其存储到链接列表的函数
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
该函数在第一次运行时有效,但是当我第二次运行时它将出现错误,并且我确信它第一次能够读取所有数据。 为什么以及如何进行改进?