删除,按员工号删除员工信息。
提示:先输入将删除的员工号,从源文件中读出该员工信息,要求对此进行确认,以决定是否将此信息删除,再保存到源文件中。
#include <stdio.h>
#include <stdlib.h>
struct Employee {
int id;
char name[20];
int age;
};
int main() {
// 定义源文件和目标文件
FILE *src, *dst;
// 打开源文件和目标文件
src = fopen("employees.dat", "rb");
dst = fopen("temp.dat", "wb");
if (src == NULL || dst == NULL) {
printf("文件打开失败!\n");
return -1;
}
// 输入将要删除的员工号
int id;
printf("输入要删除的员工号:");
scanf("%d", &id);
// 从源文件中读取员工信息,并进行确认
Employee e;
while (fread(&e, sizeof(Employee), 1, src) == 1) {
if (e.id == id) {
printf("员工号:%d\n", e.id);
printf("姓名:%s\n", e.name);
printf("年龄:%d\n", e.age);
printf("确认删除吗?(y/n)");
char ch;
scanf(" %c", &ch);
if (ch == 'n') {
// 如果不删除,则将员工信息写入目标文件中
fwrite(&e, sizeof(Employee), 1, dst);
}
}
else {
// 将员工信息写入目标文件中
fwrite(&e, sizeof(Employee), 1, dst);
}
}
// 关闭源文件和目标文件
fclose(src);
fclose(dst);
// 将目标文件覆盖源文件
remove("employees.dat");
rename("temp.dat", "employees.dat");
return 0;
}