![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
VC++编程题编译没错但运行时出错
急求大神揪出所有错误,把改后能完美运行的txt发给本人就行. 展开
没什么大问题,就是结构体定义的时候没有定义好,在加上结构体不是很了解,结构体相互赋值是可以直接赋值的。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct EI //Employee information职工信息//
{
int Eid;
char EN[20];
char ES;
char EDOB[20]; //字符串
char EE[30];
char EJ[20]; //字符串
int EW;
char EA[30];
char ET[20];
}Ei[100];
void face(); //使用主界面函数//
void save(int a) //保存函数//
{
int i;
FILE *fp;
if((fp=fopen("ei.dat","wb"))==NULL)
{
printf("无法打开\n");
exit(0);
}
for(i=0;i<a;i++)
if(fwrite(&Ei[i],sizeof(struct EI),1,fp)!=1)
printf("错误");
fclose(fp);
}
void Input() //录入函数//
{
int i,a;
system("cls");
printf("输入要录入的人数:\n");
scanf("%d",&a);
printf("按顺序输入职工基本信息.\n");
for(i=0;i<a;i++)
{
printf("输入职工号:");
scanf("%d",&Ei[i].Eid);
printf("输入姓名:");
scanf("%s",&Ei[i].EN);
getchar();
printf("输入性别:(W或者M)");
scanf("%c",&Ei[i].ES);
printf("输入出生年月:(格式XXXX-XX)");
scanf("%s",&Ei[i].EDOB);
printf("输入学历:");
scanf("%s",&Ei[i].EE);
printf("输入职务:");
scanf("%s",&Ei[i].EJ);
printf("输入工资:");
scanf("%d",&Ei[i].EW);
printf("输入住址:");
scanf("%s",&Ei[i].EA);
printf("输入电话:");
scanf("%s",&Ei[i].ET);
}
save(a);
face();
}
int load() //导入函数//
{
FILE*fp;
int i=0;
if((fp=fopen("ei.dat","rb"))==NULL)
{
printf ("无法打开\n");
exit(0);
}
else
{
do
{
fread(&Ei[i],sizeof(struct EI),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
void All() //显示所有职工信息函数//
{
int i;
int m=load();
printf("全部职员信息如下:\n");
printf("职工号\t姓名\t性别\t出生年月\n");
for(i=0;i<m;i++)
printf("%d\t%s\t%c\t%s\n",Ei[i].Eid,Ei[i].EN,Ei[i].ES,Ei[i].EDOB);
printf("学历\t职位\t工资\t住址\t电话\n");
for(i=0;i<m;i++)
printf("%s\t%s\t%d\t%s\t%s\n",Ei[i].EE,Ei[i].EJ,Ei[i].EW,Ei[i].EA,Ei[i].ET);
system("pause");
face();
}
void IDfind() //职工号查询函数//
{
int n,i,a=load();
system("cls");
printf("输入员工工号:");
scanf("%d",&n);
system("cls");
for(i=0;i<a;i++)
if(n=Ei[i].Eid)
{
printf("职工号\t姓名\t性别\t出生年月\n");
printf("%d\t%s\t%c\t%s\n",Ei[i].Eid,Ei[i].EN,Ei[i].ES,Ei[i].EDOB);
printf("学历\t职位\t工资\t住址\t电话\n");
printf("%s\t%s\t%d\t%s\t%s\n",Ei[i].EE,Ei[i].EJ,Ei[i].EW,Ei[i].EA,Ei[i].ET);
system("pause");
}
face();
}
void EIrepair() //修改函数//
{
FILE *fp;
int i,n,a=load();
system("cls");
if((fp=fopen("ei.dat","wb+"))==NULL)
{
printf("无法打开\n");
exit(0);
}
printf("输入想修改的员工号:");
scanf("%d",&n);
system("cls");
for(i=0;i<a;i++)
{
if(Ei[i].Eid==n)
{
printf("1.职工号2.姓名3.性别4.出生年5.学历6.职务7.工资8.住址9.电话\n");
printf("输入想修改的序号:");
scanf("%d",&n);
system("cls");
switch(n)
{
case 1:printf("输入新数据:");scanf("%d",&Ei[i].Eid);break;
case 2:printf("输入新数据:");scanf("%s",&Ei[i].EN);break;
case 3:printf("输入新数据:");scanf("%s",&Ei[i].ES);break;
case 4:printf("输入新数据:");scanf("%s",&Ei[i].EDOB);break;
case 5:printf("输入新数据:");scanf("%s",&Ei[i].EE);break;
case 6:printf("输入新数据:");scanf("%s",&Ei[i].EJ);break;
case 7:printf("输入新数据:");scanf("%d",&Ei[i].EW);break;
case 8:printf("输入新数据:");scanf("%s",&Ei[i].EA);break;
case 9:printf("输入新数据:");scanf("%s",&Ei[i].ET);break;
}
}
}
save(a);
system("pause");
face();
}
void EIdelete() //删除函数//
{
FILE *fp;
int i,n,p,a=load();
system("cls");
if((fp=fopen("ei.dat","wb+"))==NULL)
{
printf("无法打开\n");
exit(0);
}
printf("输入想删除的职工号:");
scanf("%d",&n);
system("cls");
for(i=0;i<a;i++)
{
if(Ei[i].Eid==n)
break;
}
if(i >= a)
printf("未找到对应工号!\n");
else
{
for(p=i;p<a;p++)
{
Ei[p] = Ei[p+1]; //结构体可以直接这样赋值
}
save(a-1); //保存数少一个
}
system("pause");
face();
}
void face() //主界面函数//
{
int n;
system("cls");
printf(" 主界面 \n");
printf(" 1.录入 \n");
printf(" 2.查看所有 \n");
printf(" 3.按职工号查询 \n");
printf(" 4.修改 \n");
printf(" 5.删除 \n");
printf("输入想进行的操作:");
scanf("%d",&n);
if(n!=1&&n!=2&&n!=3&&n!=4&&n!=5)
{
face();
}
switch(n)
{
case 1:Input();break;
case 2:All();break;
case 3:IDfind();break;
case 4:EIrepair();break;
case 5:EIdelete();break;
}
}
void main()
{
face();
system("cls");
}
![](https://ecmc.bdimg.com/public03/b4cb859ca634443212c22993b0c87088.png)
2024-08-21 广告