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 的安全版本,如果打开文件失败,则会返回一个错误码。如果打开文件失败,它将打印错误消息并返回。如果打开文件成功,它将写入数据并关闭文件,然后向用户显示保存记录的消息。
如果回答有帮助,望采纳。