9.有一磁盘文件employee,内存放职工的数据。每个职工的数据包括职工姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define SIZE 3struct Employee
{   char name[10];int num;char sex[5];int age;char adress[10];int salary;char health[10];char edu[10];
}emp1[SIZE];struct Wage
{char name[10];int salary;
}emp2[SIZE];void save1()
{FILE *fp;int i;if((fp=fopen("employee.dat","wb"))==NULL){printf("can't open file!\n");exit(0);}for(i=0;i<SIZE;i++){if(fwrite(&emp1[i],sizeof(struct Employee),1,fp)!=1)printf("file write error\n");}fclose(fp);
}void save2()
{FILE *fp;int i;if((fp=fopen("wage.dat","wb"))==NULL){printf("can't open file!\n");exit(0);}for(i=0;i<SIZE;i++){if(fwrite(&emp2[i],sizeof(struct Wage),1,fp)!=1)printf("file write error\n");}fclose(fp);
}int main()
{FILE *fp;int i;for(i=0;i<SIZE;i++){  printf("请输入第%d个职工的姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度:",i+1);scanf("%s%d%s%d%s%d%s%s",emp1[i].name,&emp1[i].num,emp1[i].sex,&emp1[i].age,emp1[i].adress,&emp1[i].salary,emp1[i].edu,emp1[i].health);printf("第%d个职工的姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度为:",i+1);printf("%s %d %s %d %s %d %s %s\n\n",emp1[i].name,emp1[i].num,emp1[i].sex,emp1[i].age,emp1[i].adress,emp1[i].salary,emp1[i].health,emp1[i].edu);} save1();fp=fopen("employee.dat","rb");for(i=0;i<SIZE;i++){fread(&emp1[i],sizeof(struct Employee),1,fp);strcpy(emp2[i].name,emp1[i].name);emp2[i].salary=emp1[i].salary; }fclose(fp);save2();fp=fopen("wage.dat","rb");for(i=0;i<SIZE;i++)//为了验证磁盘文件Wage中是否已存在此数据,用for语句从Wage文件中读入数据到emp2数组,然后向屏幕上输出{fread(&emp2[i],sizeof(struct Wage),1,fp);printf("第%d个职工的姓名和工资为:",i+1);printf("%s %d\n",emp2[i].name,emp2[i].salary);}fclose(fp);return 0;
}

在VS2019下,需将源文件的fopen和scanf和strcpy做些修改:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define SIZE 3struct Employee
{char name[10];int num;char sex[5];int age;char adress[10];int salary;char health[10];char edu[10];
}emp1[SIZE];struct Wage
{char name[10];int salary;
}emp2[SIZE];void save1()
{FILE* fp;int i;fopen_s(&fp, "employee.dat", "wb");if (fp == NULL){printf("can't open file!\n");exit(0);}for (i = 0; i < SIZE; i++){if (fwrite(&emp1[i], sizeof(struct Employee), 1, fp) != 1)printf("file write error\n");}fclose(fp);
}void save2()
{FILE* fp;int i;fopen_s(&fp, "wage.dat", "wb");if (fp == NULL){printf("can't open file!\n");exit(0);}for (i = 0; i < SIZE; i++){if (fwrite(&emp2[i], sizeof(struct Wage), 1, fp) != 1)printf("file write error\n");}fclose(fp);
}int main()
{FILE* fp;int i;for (i = 0; i < SIZE; i++){printf("请输入第%d个职工的姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度:", i + 1);scanf_s("%s%d%s%d%s%d%s%s", emp1[i].name, (unsigned int)sizeof(emp1[i].name), &emp1[i].num, emp1[i].sex, (unsigned int)sizeof(emp1[i].sex), &emp1[i].age, emp1[i].adress, (unsigned int)sizeof(emp1[i].adress), &emp1[i].salary, emp1[i].edu, (unsigned int)sizeof(emp1[i].edu), emp1[i].health, (unsigned int)sizeof(emp1[i].health));printf("第%d个职工的姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度为:", i + 1);printf("%s %d %s %d %s %d %s %s\n\n", emp1[i].name, emp1[i].num, emp1[i].sex, emp1[i].age, emp1[i].adress, emp1[i].salary, emp1[i].health, emp1[i].edu);}save1();fopen_s(&fp, "employee.dat", "rb");for (i = 0; i < SIZE; i++){fread(&emp1[i], sizeof(struct Employee), 1, fp);strcpy_s(emp2[i].name, strlen(emp1[i].name) + 1, emp1[i].name);emp2[i].salary = emp1[i].salary;}fclose(fp);save2();fopen_s(&fp, "wage.dat", "rb");for (i = 0; i < SIZE; i++)//为了验证磁盘文件Wage中是否已存在此数据,用for语句从Wage文件中读入数据到emp2数组,然后向屏幕上输出{fread(&emp2[i], sizeof(struct Wage), 1, fp);printf("第%d个职工的姓名和工资为:", i + 1);printf("%s %d\n", emp2[i].name, emp2[i].salary);}fclose(fp);return 0;
}

9.有一磁盘文件employee,内存放职工的数据。每个职工的数据包括职工姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。相关推荐

  1. 题10.9:有一磁盘文件employee,内存放职工的数据。每个职工的数据包括职工姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文

    题目 本题是谭浩强<C程序设计课后习题>题10.9. 题目: 有一磁盘文件employee,内存放职工的数据.每个职工的数据包括职工姓名.职工号.性别.年龄.住址.工资.健康状况.文化程度 ...

  2. c语言定义一个结构体描述学生信息,1)定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址); 2)设计一个函数,用于显示单个学生信息,函...

    满意答案 q55478683 2016.02.07 采纳率:46%    等级:8 已帮助:361人 struct stu { long int Num; char name[20]; char ge ...

  3. ASP.NET一个网站内存放多个config文件(Web.Config文件中configSource 的用法

    ASP.NET一个网站内存放多个config文件(Web.Config文件中configSource 的用法) 2011年08月10日 星期三 上午 11:41 每个网站里都会有一个web.confi ...

  4. 在“D:/mydat“目录下有一个学生名单文件(文本)“student2018.txt“,里面记载了若干学生信息, 每个学生信息单独一行,每行信息共有五列,每列之间用逗号分开, 其每列含义按顺序是:学

    在"D:/mydat"目录下有一个学生名单文件(文本)"student2018.txt",里面记载了若干学生信息, 每个学生信息单独一行,每行信息共有五列,每列 ...

  5. 文件操作:编写程序实现将学号,姓名,住址单独提取出来(其中不包含学号“2001“的学生)另外建一个文件

    系列文章目录 该文件中存放学生的数据包括:学号,姓名,性别,年龄,住址 //编写程序实现将学号,姓名,住址单独提取出来(其中不包含学号"2001"的学生)另外建一个文件 #incl ...

  6. 前端第三方依赖文件单独抽出 注入一个公共js文件 html引入方法

    虽然前端现在主流使用框架搭建项目,但还是有少许人用jq来开发项目,众所周知,jq引入第三方依赖时每个html页面都需引入,重复动作,依赖越来越多,引入一整坨.因此,我们可以建一个公共js文件,把各页面 ...

  7. python3 用pygame 简单建一个飞船模型

    本文所用到的ship.bmp和alien.bmp的下载   链接: https://pan.baidu.com/s/1Dn5yaQGZLIsN0BohM8PzoA  密码: 38ie 第一部分:认识p ...

  8. 在内网建一个FTP服务器,并且可以通过外网访问

    转自:http://bbs.51cto.com/archiver/tid-602231.html ========================================= 一.前言 1.什么 ...

  9. Current综述:中农宋春旭等为植物有益微生物组构建一个美好家园

    作者:薄纯斌,南京农业大学硕士在读,主要研究资源调控微生物互作. 周刊主要展示LorMe团队成员优秀周报,每周定期为您奉上学术盛宴!本期周刊为您介绍增强植物有益微生物组定殖的几种策略,原文于2021年 ...

最新文章

  1. 告别beta版-Google Daydream SDK 1.0正式版发布并支持Unity原生开发
  2. Java 多线程:InheritableThreadLocal 实现原理
  3. 《计算机组成原理》课程设计报告——TEC-2实验系统——微程序设计
  4. VC实现最小化后在系统托盘显示
  5. 智慧消防、消防管理、事件管理、维保巡检、应急管理、培训管理、值班管理、考试管理、设备列表、机构管理、应急预案、axure原型、rp原型
  6. 开发基于vue前端框架下的系统的UI自动化,记录总结踩的坑
  7. 服务器--apache启用多个端口的方法
  8. CSS3 Gradient 渐变
  9. linux+极点五笔输入法,Linux技巧之Ubuntu11.04下安装极点五笔输入法
  10. Unity项目发布谷歌AAB+PAD
  11. request请求 下载附件
  12. python网页提交表单_python模拟实现自动填写网页表单源码
  13. Ubuntu 安装 7z 加解压软件及其命令行的使用
  14. Snaker 用户手册
  15. 简化sqp唯一数据的逻辑
  16. mysql 求订单总金额,MySQL查询 每年 每月 每日 订单数和订单金额
  17. Android双目三维重建:Android双目摄像头实现双目测距
  18. 嵌入式系统开发-麦子学院(12)——ARM Cortex A8 硬件基础(2)
  19. 简易个人网站的搭建--基础准备工作(一)
  20. 腾讯的核心竞争力是什么

热门文章

  1. 足不出户24小时立案 广东法院全年网上立案超29万件
  2. Jenkins打包部署gitee项目至阿里云ECS服务器
  3. C语言再学习 -- EOF、feof函数、ferror函数
  4. 【爬虫Practice】学习过程中遇到的问题
  5. BLE低功耗蓝牙开发学习,从零到深教程文档总结(持续更新2022/6/14更新)
  6. html获取网站状态码,分享网站日志HTTP状态码完整说明攻略
  7. 皮尔逊相关系数与p值
  8. 湖北省计算机科学与技术排名,2018湖北省大学一流专业排名,武汉大学第一
  9. Google Android开发精华教程(apkbus整理)
  10. 0基础:教你看懂HTML5