C语言 读取文件时 除正常数据外 还有些乱码

voidReadFile(LinkListhead)//读取数据文件,创建新链表{FILE*fp;charfname[60];LinkListp=head;printf(... void ReadFile(LinkList head) // 读取数据文件,创建新链表 { FILE *fp; char fname[60]; LinkList p=head; printf("请输入要打开的文件名: "); scanf("%s",fname); fp=fopen(fname,"rb"); if((fp=fopen(fname,"rb"))==NULL) { printf("无法打开文件!!!\n"); return; } printf("\n读取数据为: \n"); while(!feof(fp)) { p->next=(LinkList)malloc(sizeof(Student)); fread((void *)p->next,sizeof(Student),1L,fp); printf("学号:%d 姓名:%s 年级:%s 专业:%s 三门成绩:%6.2f,%6.2f,%6.2f\n", p->next->number,p->next->name,p->next->grad,p->next->profess, p->next->score[0],p->next->score[1],p->next->score[2]); p=p->next; } p->next=NULL; fclose(fp); } typedef struct Student //链表的数据结构 { int number; char name[20]; char grad[20]; char profess[20]; float score[5]; struct Student *next; }Student,*LinkList; 展开
 我来答
孔奥乌雅壤
2020-02-29 · TA获得超过1092个赞
知道答主
回答量:1966
采纳率:100%
帮助的人:11.5万
展开全部
文件末尾检测出问题。
在C语言中文件读取操作时不能完全依赖于“while(!feof(fp)){...}”的判断
建议检测读出的数据,或用fgetc判断文件结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北许弥梦华
2020-07-24 · TA获得超过1049个赞
知道小有建树答主
回答量:2044
采纳率:100%
帮助的人:10.1万
展开全部
必须确保这个文件一定是用fwrite()函数写入的,而且读写格式一定相同,即写入语句是
fwrite((void
*)Student,sizeof(Student),1L,fp);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邓生礼艺
2020-02-16 · TA获得超过1119个赞
知道小有建树答主
回答量:2089
采纳率:100%
帮助的人:12.3万
展开全部
信息不太全,最好贴一下LinkList实体与真正文件whd里面的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式