有一磁盘文件“employee”,内存放职工的数据。每个职工的数据包括职工姓名、职
工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。从“职工工资文件”中删去一个职工的数据,再存回原文件。
#include<stdio.h> #include<stdlib.h> #include<string.h> struct emploee {char name[10]; int salary; }emp[20]; int main() {FILE*fp; int i,j,n,flag; char name[10]; if((fp=fopen("emp_salary","rb"))==NULL) {printf("can not open file.\n"); exit(0); } printf("\noriginal data:\n"); for(i=0;freadd(&emp[i],sizeof( struct emploee),1,fp)!=0;i++) printf("\n %8s %7d",emp[i].name,emp[i].salary); fclose(fp); n=i; printf("\ninput name deleted\n"); scarf("%s",name); for(flag=1,i=0;flag&&i<n;i++) {if(stromp(name,emp[i].name)==0) {for(j=i;j<n-1;j++) {strcpy(emp[j].name,emp[j+1].name); emp[j].salary=emp[j+1].salary. } flag=0; } } if(!flag) n=n-1; else printf("\nnot found!"); printf("\nNow,The content of file:\n”); if((fp=fopen("emp_salary","wb”))==NULL) {printf("can not open file\n'"); exit(0); } for(i=0;i<n;i++) fwrite(&emp[i],sizeof(struct emploee),1,fp); fclose(fp); fp=fopen("emp_salary","r”); for(i=0;fread(&emp[i],sizeof( struct emploee),1,fp)!=0;i++) printf("\n%8s %7d",emp[i].name,emp[i].salary); printf("\n"); fclose(fp); return 0; }
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct emploee
{char name[10];
int salary;
}emp[20];
int main()
{FILE*fp;
int i,j,n,flag;
char name[10];
if((fp=fopen("emp_salary","rb"))==NULL)
{printf("can not open file.\n");
exit(0);
}
printf("\noriginal data:\n");
for(i=0;freadd(&emp[i],sizeof( struct emploee),1,fp)!=0;i++)
printf("\n %8s %7d",emp[i].name,emp[i].salary);
fclose(fp);
n=i;
printf("\ninput name deleted\n");
scarf("%s",name);
for(flag=1,i=0;flag&&i<n;i++)
{if(stromp(name,emp[i].name)==0)
{for(j=i;j<n-1;j++)
{strcpy(emp[j].name,emp[j+1].name);
emp[j].salary=emp[j+1].salary.
flag=0;
if(!flag)
n=n-1;
else
printf("\nnot found!");
printf("\nNow,The content of file:\n”);
if((fp=fopen("emp_salary","wb”))==NULL)
{printf("can not open file\n'");
for(i=0;i<n;i++)
fwrite(&emp[i],sizeof(struct emploee),1,fp);
fp=fopen("emp_salary","r”);
for(i=0;fread(&emp[i],sizeof( struct emploee),1,fp)!=0;i++)
printf("\n%8s %7d",emp[i].name,emp[i].salary);
printf("\n");
return 0;
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题