C语言链表输出乱码

如图,我打算做一个学生成绩管理系统,当选择“显示现有成绩记录”时会显示乱码,计算平均分时也会把乱码数据计算进去。个人感觉可能是函数feof()附近有问题,但一直未找出,求... 如图,我打算做一个学生成绩管理系统,当选择“显示现有成绩记录”时会显示乱码,计算平均分时也会把乱码数据计算进去。个人感觉可能是函数feof()附近有问题,但一直未找出,求大神解答。
相关代码如下:
void main(){ struct student *head,*q,*l; FILE *fp; int count=0; head=(struct student*)malloc(sizeof(struct student)); head->next=NULL; l=head; fp=fopen("D:\\student","ab+"); if(fp==NULL) { printf("can not open this file.\n"); exit(0); } while(!feof(fp)) { q=(struct student*)malloc(sizeof(struct student)); if(!q) { printf("memory malloc failure!\n"); exit(0); } if(fread(q,sizeof(struct student),1,fp)==1); { q->next=NULL; l->next=q; l=q; count++; } } fclose(fp); printf("\n共有学生成绩记录%d条\n",count); menu(head);}
展开
 我来答
aoqingxin
2013-08-31 · 超过23用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:65.9万
展开全部
锅锅,你输出的肯定是head节点里的内容吧,但是你的代码是把从文件里读出来的东西存入后续节点里的呀,你的head节点里是空的,所以我觉得你的menu函数有问题,首先定位到head->next,然后再输出试试吧。
zouadw
2013-08-31 · TA获得超过102个赞
知道答主
回答量:90
采纳率:100%
帮助的人:96.6万
展开全部
q=(struct student*)malloc(sizeof(struct student));
malloc并不会给内存赋初值,用memset(q,0,sizeof(struct student));将初值赋为0;
如下,在q=(struct student*)malloc(sizeof(struct student));后面加上memset(q,0,sizeof(struct student));这一句.
追问

按照你说的添加之后乱码确实没有了,不过变成了这样

先前的乱码数据全部变成了0,计算时一样会出错啊?

追答
检查:计算时,有没有执行除0的操作,
之前没有进初始化时,你的计算会装乱码的内容进行计算,应该是在读文件的时候有问题,
另:存进语文件的数据都是以字符存进去的,用结构体直接将它读出来,是有风险的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BLIZZARDst
2013-08-31
知道答主
回答量:1
采纳率:0%
帮助的人:1468
展开全部
请你们寝室大神求助,分就不用给了,不谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式