在c语言中如何删除文件中的指定数据(文件操作)

删除,按员工号删除员工信息。
提示:先输入将删除的员工号,从源文件中读出该员工信息,要求对此进行确认,以决定是否将此信息删除,再保存到源文件中。


#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;
}