寫一個員工的基本信息,寫入一個employee文件中,然後提取其中的員工的名字和收入寫入另一個簡單文件中

#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;
}

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章