C //习题10.10 从第9题的“职工工资文件”中删除一个职工的数据,再存回原文件。

2023-12-11 03:15

本文主要是介绍C //习题10.10 从第9题的“职工工资文件”中删除一个职工的数据,再存回原文件。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C程序设计 (第四版) 谭浩强 习题10.10

习题10.10 从第9题的“职工工资文件”中删除一个职工的数据,再存回原文件。

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块
方法:使用指针,函数的模块化设计,动态分配内存
说明:文件wage.dat已经存在与项目目录下。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define N 3typedef struct{int num;char name[20];char gender;int age;char addr[20];float wage;char health;char edu[10];
}Employee;void initialVar(Employee **emp, int n, char **name){*emp = (Employee*)malloc(n * sizeof(Employee));*name = (char*)malloc(80 * sizeof(char));
}void inputFileName(FILE **file, char *name){printf("Enter File Name: ");scanf("%s", name);*file = fopen(name, "rb");if(*file == NULL){perror("Cannot open this file");system("pause");exit(0);}
}void readFile(FILE **file, Employee *emp, int n){printf("Read File Info:\n");for(int i = 0; i < n; i++){fread(&emp[i].name, sizeof(Employee), 1, *file);fread(&emp[i].wage, sizeof(Employee), 1, *file);printf("Name: %-10s  Wage: %-.2f\n", emp[i].name, emp[i].wage);}printf("\n");fclose(*file);
}void deleteRec(FILE **file, char *name, Employee *emp, int n, int num){for(int i = 0; i < n; i++){if(i == num - 1){for(int j = i; j < n - 1; j++){emp[j] = emp[j+1];}break;}}*file = fopen(name, "wb");if(*file == NULL){perror("Cannot open this file");system("pause");exit(0);}for(int i = 0; i < n - 1; i++){if(fwrite(&emp[i].name, sizeof(Employee), 1, *file) != 1){perror("File Write Error");system("pause");exit(0);}	if(fwrite(&emp[i].wage, sizeof(Employee), 1, *file) != 1){perror("File Write Error");system("pause");exit(0);}}fclose(*file);
}void outputFileNew(FILE **file, char *name, Employee *emp, int n){*file = fopen(name, "rb");if(*file == NULL){perror("Cannot open this file");system("pause");exit(0);}printf("New Employee Info:\n");for(int i = 0; i < n; i++){fread(&emp[i].name, sizeof(Employee), 1, *file);fread(&emp[i].wage, sizeof(Employee), 1, *file);printf("Name: %-10s  Wage: %-.2f\n", emp[i].name, emp[i].wage);}printf("\n");fclose(*file);
}int main(){FILE *file = NULL;Employee *emp = NULL;char *name = NULL;initialVar(&emp, N, &name);inputFileName(&file, name);readFile(&file, emp, N);deleteRec(&file, name, emp, N, 1);outputFileNew(&file, name, emp, N-1);system("pause");return 0;
}
运行结果如下:

在这里插入图片描述

这篇关于C //习题10.10 从第9题的“职工工资文件”中删除一个职工的数据,再存回原文件。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/479276

相关文章

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt