#include <stdio.h>
#include <string.h>
#define SIZE 100
int num=0;
struct member_type
{
char name[10];
int id;
int age;
char addr[15];
}mem[SIZE]; //定义结构体和结构体数组
void minput() //自定义函数
{
char ch;
while(1)
{
printf("请输入职员相关信息:\n");
printf("职员ID:");
scanf("%d",&mem[num].id);
printf("\n");
printf("职员姓名:");
scanf("%s",&mem[num].name);
printf("\n");
printf("职员年龄:");
scanf("%d",&mem[num].age);
printf("\n");
printf("职员地址:");
scanf("%s",&mem[num].addr);
printf("\n");
num++;
getchar();
printf("是否继续录入职员信息?(Y/N)\n");
ch = getchar();
if (ch =='n' || ch =='N')
{
break;
}
}
FILE *fp; //指针的定义与引用
int i;
if ((fp=fopen("member.dat","wb"))==NULL)
{
printf("出错了,无法打开文件!\n");
return ;
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("出错了,无法写入文件!\n");
}
for (i=0;i<num;i++)
{
if (fwrite(&mem[i],sizeof(struct member_type),1,fp)!=1)
{
printf("出错了,无法写入文件!\n");
}
}
fclose(fp);
}
void moutput()
{
//文件常用操作(打开,读/写数据,关闭等)
FILE *fp;
int i;
if ((fp=fopen("member.dat","rb"))==NULL)
{
printf("出错了,无法打开文件!\n");
return ;
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&mem[i],sizeof(struct member_type),1,fp);
printf("%s 的职员ID为 %d 年龄为 %d 地址为 %s\n",mem[i].name,mem[i].id,mem[i].age,mem[i].addr);
}
}
fclose(fp);
}
int main()
{
int xuhao;
void minput();
void moutput();
while(1) //循环结构
{
printf("=========企业职员信息管理程序===========\n");
printf("1,输入职员信息\n");
printf("2,查看已录入职员信息\n");
printf("3,退出本程序\n");
printf("请输入要执行的操作前面的序号:");
scanf("%d",&xuhao);
switch(xuhao) //选择结构
{
case 1:minput();
break;
case 2:moutput();
break;
case 3:return 0;
}
}
return 0;
}
改了之后有4个错误,你能帮忙修改一下吗。。跪谢
追答简单改了一下,太长贴不上来,看看这两函数吧
void minput() //自定义函数
{
FILE *fp; //指针的定义与引用
int i;
char ch;
while(1)
{
printf("请输入职员相关信息:\n");
printf("职员ID:");
scanf("%d",&mem[num].id);
printf("\n");
printf("职员姓名:");
scanf("%s",&mem[num].name);
printf("\n");
printf("职员年龄:");
scanf("%d",&mem[num].age);
printf("\n");
printf("职员地址:");
scanf("%s",&mem[num].addr);
printf("\n");
num++;
ch = getchar();
printf("是否继续录入职员信息?(Y/N)\n");
ch = getchar();
if (ch =='n' || ch =='N')
{
break;
}
}
if ((fp=fopen("member.dat","wb"))==NULL)
{
printf("出错了,无法打开文件!\n");
return ;
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("出错了,无法写入文件!\n");
}
for (i=0;i<num;i++)
{
if (fwrite(&mem[i],sizeof(struct member_type),1,fp)!=1)
{
printf("出错了,无法写入文件!\n");
}
}
fclose(fp);
}
int main()
{
int xuhao=0;
void minput();
void moutput();
while(xuhao != 3) //循环结构
{
printf("=========企业职员信息管理程序===========\n");
printf("1,输入职员信息\n");
printf("2,查看已录入职员信息\n");
printf("3,退出本程序\n");
printf("请输入要执行的操作前面的序号:");
scanf("%d",&xuhao);
switch(xuhao) //选择结构
{
case 1:minput();
break;
case 2:moutput();
break;
case 3:
break;
}
}
return 0;
}