#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define M 10
#define N 3
struct T
{
char name[M];
char num[M];
char sex;
int age;
char add[M];
float comes;
char lev[M];
char hea[M];//健康状况
}s[N];//假设就三个职工把
struct U{
char name[10];
float comes;
}t[N];
void save()
{
FILE *fp,*p;
int i;
if((fp=fopen("employee.txt","wb"))==NULL)
{
printf("error");
exit(0);
}
for(i=0;i<N;i++)
{
if((fwrite(&s[i],sizeof(struct T),1,fp))!=1) //把输入的职工数据写入文件中
printf("file write error");
}
rewind(fp);//指针重新指向一下
//打开这个文件
if((fp=fopen("employee.txt","rb"))==NULL)
{
printf("error");
exit(0);
}
for(i=0;i<N;i++)
{
if((fread(&s[i],sizeof(struct T),1,fp))!=1) //把输入的职工数据写入文件中
printf("file write error");
printf("%-4s %4s %2c %4d %4s %4f %4s %4s\n",s[i].name,s[i].num,s[i].sex,s[i].age,s[i].add,s[i].comes,s[i].lev,s[i].hea);
strcpy(t[i].name,s[i].name);//把员工的名字和收入房子另一个结构体数组中保存起来
t[i].comes=s[i].comes;
}
if((p=fopen("empty.txt","wb"))==NULL)
{
printf("error");
exit(0);
}
for(i=0;i<N;i++)
{
if((fwrite(&t[i],sizeof(struct U),1,p))!=1) //把输入的职工数据写入文件中
printf("file write error");
}
rewind(p);//指针重新指向一下
//打开这个文件
if((p=fopen("empty.txt","rb"))==NULL)
{
printf("error");
exit(0);
}
for(i=0;i<N;i++)
{
if((fread(&t[i],sizeof(struct U),1,p))!=1) //把输入的职工数据写入文件中
printf("file write error");
printf("%-5s %4f\n",t[i].name,t[i].comes);
}
fclose(fp);
fclose(p);
}
int main()
{
//输入数据;
int i;
printf("请输入职工的姓名,职工号,性别,年龄,地址,收入,文化水平,健康状态:\n");
for(i=0;i<N;i++)
{
scanf("%s %s %c %d %s %f %s %s",s[i].name,s[i].num,&s[i].sex,&s[i].age,s[i].add,&s[i].comes,s[i].lev,s[i].hea);
}
save();//给写入employee文件中
return 0;
}
代码的关键:在于员工姓名的复制,收入的复制。然后放到一个新定义的结构体变量中存储,最后把这个新的结构体变量写入文件中,再读取就可以。注意:先写入然后再读取操作。