当把链表已经确定的时候,就可以依次存入文件。
和平时链表的遍历一样,每读取一个节点内容就进行一次存入操作。
不过要注意几个部分的检查:
内存空间是否分配成功
是否成功存入到文件中
在工作完成之后,是否将以后不会用到的变量清空和删除。
按照问题要求的代码如下:
Consumer* read_list()
{
FILE *fp;
if ((fp = fopen("CONSUMER.dat", "rb")) == NULL)
{
printf("无法读取 CONSUMER.dat\n");
return NULL;
}
int sign;
Consumer *s,*p,*head;
head= (Consumer*)malloc(SIZE_C);
if (head == NULL)
{
printf("读取失败!内存空间申请不足!\n");
return NULL;
}
fseek(fp, 0, SEEK_END);
if (ftell(fp) == 0)
{
return NULL;
}
p = head;
p->next = NULL;
while (feof(fp))
{
s = (Consumer*)malloc(SIZE_C);
//fread(s, SIZE_C, 1, fp);
fread(s, sizeof(char), SIZE_C, fp);
p->next = s;
p = s;
p->next = NULL;
}
fclose(fp);
return head;
}//读取文件到链表
int save_consumer(Consumer *p)
{