#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;
}
代碼的關鍵:在於員工姓名的複製,收入的複製。然後放到一個新定義的結構體變量中存儲,最後把這個新的結構體變量寫入文件中,再讀取就可以。注意:先寫入然後再讀取操作。