已经修改了没错误,怎么有死循环?请帮忙!谢谢了!

salyly 2003-09-12 02:21:11
我做的其实是个职工信息管理系统,不知对不对!不过我运行的时候,选OUTPUT便出现死循环,能帮忙排除一下吗?谢谢了!
#include<stdio.h>
struct person{ char name[8];
char id[15];
char sex[4];
char birth[10];
char prof[20];
char educat[20];
char salary[20];
char marriage[10];
};
char filename[20];
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();

main()
{ int m;

creat();
while(1)
{ printf("\n\ncreat please enter 1");
printf("\nsearch please enter 2");
printf("\nmodify please enter3");
printf("\ndelete please enter 4");
printf("\noutput please enter 5");
printf("\nexit please enter 0\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{ switch(m)
{ case 1: append(); break;
case 2: search(); break;
case 3: modify(); break;
case 4: delete(); break;
case 5: output(); break;
case 0: exit();
}
printf("\n\nfinish,choose agian");
}
else printf("\n\nerror,choose again");
}
}
void creat()
{ struct person one;
long s1;

printf("\nenter file name");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{ printf("\nfail!");
exit();
}
fprintf(fp,"%-6s%-8s%-8s-8s%-8s-8s%-8s-8s\n","name","id","sex","birth","prof","educat","salary","marriage");
printf("\nenter the name,id, sex,birth,prof,educat,salary and marriage(end with0)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{ scanf("%s%s%s%s%s%s%s",one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
fprintf(fp,"%-6s%-8s%-8s-8s%-8s%-8s-8s%-8s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
scanf("%s",one.name);
}
fclose(fp);
}

void output()
{ struct person one;

if((fp=fopen(filename,"r"))==NULL)
{ printf("\nfail");
exit();
}
printf("\n\n%50s\n","employee information system ");
while(!feof(fp))
{ fscanf(fp,"%-6s%-8s%-8s-8s%-8s-8s%-8s-8s\n","name","id","sex","birth","prof","educat","salary","marriage");
printf("%-6s%-8s%-8s-8s%-8s%-8s-8s%-8s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
}
fclose(fp);
}

void append()
{ struct person one;

if((fp=fopen(filename,"a"))==NULL)
{ printf("\nfail");
exit();
}
printf("\nenter new created employee's name,id, sex,birth,prof,educat,salary and marriage\n");
scanf("%s%s%s%s%s%s%s",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
fprintf(fp,"%-6s%-8s%-8s-8s%-8s%-8s-8s%-8s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
fclose(fp);
}

void search()
{ int k=0;
char namekey[8];
struct person one;

printf("\nenter name");
scanf("%s",namekey);

if((fp=fopen(filename,"rb"))==NULL)
{ printf("\nfail");
exit();
}
while(!feof(fp))
{ fscanf(fp,"%s%s%s%s%s%s%s%s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
if(!strcmp(namekey,one.name))
{ printf("\n\nfind,here is");
printf("\n%-6s%-8s%-8s-8s%-8s%-8s-8s%-8s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
k=1;
}
}
if(!k) printf("\n\nsorry,no such one");
fclose(fp);
}

void modify()
{ int m,k=0;
long offset;
char namekey[8];
struct person one;

printf("\nenter name");
scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)
{ printf("\nfail");
exit();
}
while(!feof(fp))
{ offset=ftell(fp);
fscanf(fp,"%s%s%s%s%s%s%s%s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
if(!strcmp(namekey,one.name))
{ k=1; break; }
}
if(k)
{ printf("\nfind,here is");
printf("\n%-6s%-8s%-8s-8s%-8s%-8s-8s%-8s",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
printf("\nenter new name,id,sex,birth,prof,educat,salary and marriage:");
scanf("%s%s%s%s%s%s%s%s",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-6s%-8s%-8s-8s%-8s%-8s-8s%-8s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
}
else printf("\nsorry,no such one");
fclose(fp);
}

void delete()
{ int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;

printf("\nenter name");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{ printf("\nfail");
exit();
}
while(!feof(fp))
{ offset1=ftell(fp);
fscanf(fp,"%s%s%s%s%s%s%s%s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
if(!strcmp(namekey,one.name))
{ k=1; break; }
}
if(k)
{ printf("\nfind,here is");
printf("\n%-6s%-8s%-8s%-8s%-8s%-8s%-8s%-8s",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
printf("\nsure to del,enter 1;else,enter 0:");
scanf("%d",&m);
if(m) { fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-6s%-8s%-8s-8s%-8s%-8s-8s%-8s\n","","","","","","","","");
}
}
else printf("\nsorry,no such one");
fclose(fp);
}

...全文
78 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gernal_dn 2003-09-12
  • 打赏
  • 举报
回复
fscanf(fp,"%-6s%-8s%-8s-8s%-8s-8s%-8s-8s\n","name","id","sex","birth","prof","educat","salary","marriage");

//fscanf(fp,"%-6s%-8s%-8s-8s%-8s-8s%-8s-8s\n",one.name,one.id,one.sex,one.birth,one.prof,one.educat,one.salary,one.marriage);
【特征工程是什么?】 身高不同的两人,比较体重毫无意义, 但是如果将身高体重加以计算,转化成了BMI指数:BMI=体重/(身高^2) 通过比较这个新创造的特征值,谁胖谁瘦就一目了然了。 这就是特征工程,将原始数据转换为可以更好的、代表预测模型潜在问题的特征,通过分析这个新的特征,可以得到更准确的预测结果。 【特征工程——Python数据分析必备】 脏数据的“清洗剂” 有人说:学会了Python语言,就会做数据分析? 不一定! 你拿到的数据样本集,有可能存在这些问题: 如果样本数据存在问题,对数据建模的执行效率会有很大影响,甚至可能会造成模型结果的偏差。 不懂特征工程,数据分析=白忙一场! 【站内首门!特征工程全解课程】 过去,数字化是企业优化的要点; 而今,数字化成为了企业活下去的关键。 而数据分析应用有多广,特征工程的学习需求就有多大。 不过,大部分课本对于特征工程这一知识点鲜有提及,市面上的课程也少之又少,导致很多人在实际工作或学习中,遇到问题束手无策,严重降低效率。 CSDN全站首发——Python数据处理与特征工程 课程聚焦数据科学中,数据清洗与分析前的特征提取过程,解决数据科学中最重要的原始数据清洗和特征提取。 【定制课程 精准扫除学习盲点】 课程充分考虑各类实际问题,将每个知识点融入到对应的代码实例中,初学者也可无压力上手,讲师手把手带领入门。 知识点扫盲 + 案例实践 + 线上答疑 扫清数据分析前的所有障碍,提升你的数据工作的效率与准确度。 如果你是: 在这里你可以收获...... 了解如何将各类型数据载入计算机,进而愉快的探索数据科学; 掌握如何将需要分析的数据转化为算法模型可以接受的格式; 学会特征提取最基本的处理方式,为后续的算法学习打好基础。 经过19节课程的学习,你可以基本掌握数据采集、读取以及清洗的方法,具备进一步学习数据分析乃至深度学习的能力,能够大大拓宽你日后的求职道路。 【三重福利  惊喜等你】

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧