从第9题(上一题)的职工工资文件中删去一个职工的数据,再存回原文件。

2016-06-20 13:03:31  分类: c程序设计第四版谭浩强课后答案  参与:

 从第9题(上一题)的职工工资文件中删去一个职工的数据,再存回原文件。

谭浩强c语言程序设计第四版答案
【c源程序】
#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;fread(&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");
   scanf("%s",name);
   for (flag=1,i=0;flag && i<n;i++)
     {if (strcmp(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;
 }


来源:c程序设计第四版谭浩强课后答案

本文链接:http://www.wb98.com/c/post/tanhaoqiang_10.10.html

本站文章搜索:

<< 上一篇下一篇 >>

搜索

网站分类

Tags列表

赞助商链接