求大神,本人多次调试无效,怀疑是count()函数的问题,fp未初始化?
#include<stdio.h>#include<string.h>
#define N 200
struct employee
{
int num;
char name[20];
char sex;
char marital[10];
char xuewei[20];
char bumen[20];
char zhiwei[20];
int wage;
int gonglin;
} em[N];
save(int n)
{
int i;
FILE*fp;
fp=fopen("em.txt","wb");
for(i=0;i<n;i++)
fwrite(&em[i],sizeof(struct employee),1,fp);
fclose(fp);
}
count()
{
FILE*fp;
int i;
for(i=0;!feof(fp);i++)
fread(&em[i],sizeof(struct employee),i,fp);
fclose(fp);
return(i-1);
}
void creat()
{
int i,n;
printf("请输入职工人数(1-200):");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入职工号:");
scanf("%d",&em[i].num);
printf("请输入职工姓名:");
scanf("%s",em[i].name);
printf("请输入职工性别:");
scanf("%s",&em[i].sex);
printf("请输入职工婚姻状况:");
scanf("%s",em[i].marital);
printf("请输入职工学位:");
scanf("%s",em[i].xuewei);
printf("请输入职工部门:");
scanf("%s",em[i].bumen);
printf("请输入职工职位:");
scanf("%s",em[i].zhiwei);
printf("请输入职工工资:");
scanf("%d",&em[i].wage);
printf("请输入职工工龄:");
scanf("%d",&em[i].gonglin);
printf("\n");
}
printf("\n职工信息创建完毕!\n");
save(n);
}
void modify()
{
int i,n,k=-1,num;
n=count();
printf("请输入要修改数据的职工号: ");
scanf("%d",&num);
for(i=0;i<n;i++)
if(num=em[i].num)
{k=i;break;}
if(k==-1)printf("该职工号不存在\n");
else
{
printf(" 职工号\t姓名\t性别\t婚姻状况\n");
printf("\n %d\t%s\t%c\t%s\t\n",em[i].num,em[i].name,em[i].sex,em[i].marital);
printf("\n 学位\t部门\t职位\t工资\t工龄 \n ");
printf("\n %s\t%s\t%s\t%d\t%d\n",em[i].xuewei,em[i].bumen,em[i].zhiwei,em[i].wage,em[i].gonglin);
printf("\n");
printf("\n请重新输入该职工的数据:\n");
printf("请输入职工号:");
scanf("%d",&em[i].num);
printf("请输入职工姓名:");
scanf("%s",em[i].name);
printf("请输入职工性别:");
scanf("%c",&em[i].sex);
printf("请输入职工婚姻状况:");
scanf("%s",em[i].marital);
printf("请输入职工学位:");
scanf("%s",em[i].xuewei);
printf("请输入职工部门:");
scanf("%s",em[i].bumen);
printf("请输入职工职位:");
scanf("%s",em[i].zhiwei);
printf("请输入职工工资:");
scanf("%d",&em[i].wage);
printf("请输入职工工龄:");
scanf("%d",&em[i].gonglin);
printf("\n");
}
save(n);
}
void display()
{
int i;
int n;
n=count();
printf(" 职工号\t姓名\t性别\t婚姻状况 \n");
for(i=0;i<n;i++)
{
printf("\n %d\t%s\t%c\t%s\n",em[i].num,em[i].name,em[i].sex,em[i],em[i].marital);
printf("\n 学位\t部门\t职位\t工资\t工龄 \n ");
for(i=0;i<n;i++)
printf("\n %s\t%s\t%d\t%d\n",em[i].xuewei,em[i].bumen,em[i].zhiwei,em[i].wage,em[i].gonglin);
}
}
void search()
{
int i,n,k=-1;
int num;
n=count();
printf("\n请输入要查找的职工号:");
scanf("%d",&num);
for(i=0;i<n;i++)
if(num==em[i].num)
{ k=i;break; }
if(k==-1)printf("员工的数据不存在\n");
else
{
printf(" 职工号\t姓名\t性别\t婚姻状况\n");
printf("\n %d\t%s\t%c\t%s\t\n",em[i].num,em[i].name,em[i].sex,em[i].marital);
printf("\n 学位\t部门\t职位\t工资\t工龄 \n ");
printf("\n %s\t%s\t%d\t%d\n",em[i].xuewei,em[i].bumen,em[i].zhiwei,em[i].wage,em[i].gonglin);
}
}
void del()
{
int i,k=-1,n;
int num;
n=count();
printf("请输入要删除的职工号:");
scanf("%d",&num);
for(i=0;i<n;i++)
if(num=em[i].num)
{k=i;break;}
if(k==-1)
printf("数据不存在\n");
else
{
printf("职工号\t姓名\t性别\t婚姻状况\n");
printf("%d\t%s\t%s\t%s\n",em[k].num,em[k].name,em[k].sex,em[k].marital);
printf("部门\t职位\t工资\t工龄\n");
printf("%s\t%s\t%s\t%s\n",em[k].bumen,em[k].zhiwei,em[k].wage,em[k].gonglin);
for(i=k;i<n-1;i++)
em[i]=em[i+1];
n=n-1;
save(n);
}
}
void showmenu()
{
printf("\n 职工信息管理系统 \n");
printf("\n********菜单选项*********\n");
printf(" 1.增加员工信息 \n");
printf(" 2.修改员工信息 \n");
printf(" 3.显示员工信息 \n");
printf(" 4.查询员工信息 \n");
printf(" 5.删除员工信息 \n");
printf(" 6.保存员工信息至记录文件 \n");
printf(" 7.从记录文件读取文件信息 \n");
printf(" 8.退出 \n");
printf("\n*************************\n");
printf("\n请输入你的选择(0——8):");
}
main()
{
int choice;
showmenu();
scanf("%d",&choice);
while (choice!=0)
{
switch(choice)
{
case 1:creat();break;
case 2:modify();break;
case 3:display();break;
case 4:search();break;
case 5:del();break;
case 6:break;
case 7:break;
case 8:break;
}
showmenu();
scanf("%d",&choice);
}
}