c语言程序设计中链表的保存问题!!

来源:百度知道 编辑:UC知道 时间:2024/04/28 16:19:56
设计的是通讯录管理系统 用的链表做的...怎么样才能把链表保存到文件中.下次运行程序的时候能调用这个链表.....最好有实例语句说明....
我不知道怎么保存链表的头指针和这个动态数组的个数.
给我点实例看看啊

保存指针是没有任何意义的,因为每次程序动态分配内存的位置都不一样,所以保存了的指针下次也不会指向正确的地方。想要保存链表的话只需要保存链表里有用的内容把每个链表里有用的东西按顺序写入文件,读取的时候重新通过动态分配内存来建立新的链表,然后读入对应的内容。不需要知道链表的长度,C里面的输入函数可以返回成功读入的内容的长度,如果失败或者是文件到了结尾就会返回-1。所以只需要看看每次返回的值。如果不是-1,继续读取下一个,否则停止读取,链表终止。
比如:

struct list{
int i;
float f;
char c;
struct list *next;
};
输出:
struct list *l;
fprintf(fp,"%d %f %c\n",l->i,l->f,l->c);
输入:
struct list *l=0,*p;
while(1){
if(l=0){
l=(struct list *)malloc(sizeof(struct list));
l->next=0;
p=l;
}
else{
p->next=(struct list *)malloc(sizeof(struct list));
p=p->next;
p->next=0;
}
int m=fscanf(fp,"%d %f %c",&(p->i),&(p->f),&(p->c));
if(m==-1) break;
}

用格式化输出到文件里,下次启功程序时,从文件读到链表就ok了