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;
展开
展开全部
文件末尾检测出问题。
在C语言中文件读取操作时不能完全依赖于“while(!feof(fp)){...}”的判断
建议检测读出的数据,或用fgetc判断文件结束。
在C语言中文件读取操作时不能完全依赖于“while(!feof(fp)){...}”的判断
建议检测读出的数据,或用fgetc判断文件结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
必须确保这个文件一定是用fwrite()函数写入的,而且读写格式一定相同,即写入语句是
fwrite((void
*)Student,sizeof(Student),1L,fp);
fwrite((void
*)Student,sizeof(Student),1L,fp);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
信息不太全,最好贴一下LinkList实体与真正文件whd里面的内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询