教师工作量管理系统C语言

void save(int cnt)//保存
{
FILE* fp;
int i;
printf("开始保存记录.....\n");

fp = fopen_s("C:\\Users\\zhang\\Desktop\\teacher.txt", "r+");
for (i = 0; i < cnt; i++)
{
    fwrite(&te[i], sizeof(struct teacher), 1, fp);
}
fclose(fp);

}

该回答内容部分引用GPT,GPT_Pro更好的解决问题
在这个函数中,你打开了一个名为 "teacher.txt" 的文件,使用 "r+" 模式打开它,这意味着你正在以读写模式打开文件。然后,您使用 fwrite 函数将 te 数组中的数据写入文件。在写入数据之后,你关闭了文件。

但是,有一个问题需要注意:当以 "r+" 模式打开文件时,如果文件不存在,则会导致打开文件失败。如果确定文件已经存在,则可以使用 "a+" 模式来打开文件,这将在文件末尾追加数据,或者使用 "w+" 模式,这将清除文件并将数据写入。

在保存记录后,还应该向用户显示保存记录的消息。

因此,可以在这个函数中添加一些错误处理和用户提示,例如:

void save(int cnt) {
    FILE* fp;
    int i;
    printf("开始保存记录.....\n");

    errno_t err = fopen_s(&fp, "C:\\Users\\zhang\\Desktop\\teacher.txt", "w+");
    if (err != 0) {
        printf("无法打开文件: %s\n", strerror(err));
        return;
    }

    for (i = 0; i < cnt; i++) {
        fwrite(&te[i], sizeof(struct teacher), 1, fp);
    }

    fclose(fp);

    printf("记录已保存.\n");
}


这个函数使用了 fopen_s 函数,它是 fopen 的安全版本,如果打开文件失败,则会返回一个错误码。如果打开文件失败,它将打印错误消息并返回。如果打开文件成功,它将写入数据并关闭文件,然后向用户显示保存记录的消息。
如果回答有帮助,望采纳。