c语言如何用fwrite和fread函数实现对链表的存储和读取?

structstu{intnum;/*学号*/charname[10];/*名字*/charclas[10];/*班级*/floatscore[5];/*五类学分*/st... struct stu{
int num; /*学号*/
char name[10]; /*名字*/
char clas[10]; /*班级*/
float score[5]; /*五类学分*/
struct stu *next;
};
int n; /*全局变量 用于计算链表节点数*/

struct stu *read() /*读取*/
{
struct stu A;
struct stu *P;
int i=1;
FILE *FP;
if((FP=fopen("F:\\XX.in","rb"))==NULL)
{
printf("\t无已存数据!\n");
printf("\t按任意键返回主菜单...\n");
i=0;
head=NULL;
P=NULL;
getch();
}
if(i)
{
fseek(FP,0,0);
fread(&A,LEN,1,FP);
head=&A;
P=head;
}
n=0;
while(P!=NULL)
{
P=P->next;
n++;
}
return(head);

}

下面是存储链表的片段
FP=fopen("F:\\XX.in","wb+"); /*将数据以二进制形式储存便于下次读取*/
P=head;
while(P!=NULL)
{
fwrite(P,LEN,1,FP);
P=P->next;
}
fclose(FP);
printf(" \n");
printf(" \n");
printf("\t保存成功!\n");
printf("\t按任意键返回主菜单...\n");
getchar();
system("cls");
}
展开
 我来答
shidanshen
2011-06-27 · TA获得超过268个赞
知道小有建树答主
回答量:383
采纳率:0%
帮助的人:209万
展开全部
用fprintf()吧,这个直接一下子就搞过去
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式