#include #include #include #define STUDLEN sizeof(student)typedef struct _student{ char name[10]; char sex[5]; float weight; float high; struct _student *next;}student;void Free(student *head); void input(){ student *head=NULL,*p,*ptemp,*wpoint; char name[10],contin[5]; char sex[5]; float weight; float high; FILE *fp=fopen("student.data","ab+"); if(fp==NULL) { printf("打开文件失败\n"); exit(1); } do{ printf("输入学生姓名:"); scanf("%s",name); printf("输入性别:"); scanf("%s",sex); printf("输入体重:"); scanf("%f",&weight); printf("输入身高:"); scanf("%f",&high); p=(student *)malloc(STUDLEN); strcpy(p->name,name); strcpy(p->sex,sex); p->weight=weight; p->high=high; p->next=NULL; ptemp=head; if(head) { while(ptemp->next) ptemp=ptemp->next; ptemp->next=p; } else head=p; printf("继续录入信息?yes or no\n"); scanf("%s",contin); }while(stricmp(contin,"yes")==0); for(wpoint=head;wpoint;wpoint=wpoint->next) if(fwrite(wpoint,STUDLEN,1,fp)!=1) printf("write error\n"); Free(head); fclose(fp); } void Free(student *head){ for(;head;head=head->next) free(head);}void find(){ FILE *fp=fopen("student.data","rb"); char name[10]; student *p; if(fp=NULL) printf("打开文件失败\n"); printf("请输入姓名\n"); scanf("%s",name); while(!feof(fp)) { if(fread(p,STUDLEN,1,fp)!=1) { printf("读取失败\n"); break; } else { if(strcmp(p->name,name)) { printf("姓名:%s\n性别:%s\n身高:%.2fcm\n体重:%.2fkg\n",p->name,p->sex,p->high,p->weight); break; } } } fclose(fp); } void main(){ int menu; void input(); void find(); printf("请选择:\n"); do { printf("1.输入学生信息\n"); printf("2.查询学生信息\n"); printf("0.退出系统\n"); scanf("%d",&menu); switch(menu) { case 1:input();break; case 2:find();break; case 0:break; default:printf("error\n");break; } }while(menu!=0);}
3条回答 默认 最新
- 小灸舞 2016-03-25 00:55关注
fopen,fclose系列函数似乎不是线程安全的,fclose以后立刻fopen确实有点bug
建议楼主注释掉前半部分,直接从读文件那里运行,看看先读取文件行不行,如果可以的话,说明造成这种情况的原因是fclose后马上又对同一个文件
fopen是有点BUG的本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 3无用
悬赏问题
- ¥15 有没有整苹果智能分拣线上图像数据
- ¥20 有没有人会这个东西的
- ¥15 cfx考虑调整“enforce system memory limit”参数的设置
- ¥30 航迹分离,航迹增强,误差分析
- ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
- ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
- ¥15 LLM accuracy检测
- ¥15 pycharm添加远程解释器报错
- ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
- ¥15 如何能达到用ping0.cc检测成这样?如图