void cancle_password_teacher() { char filename[] = "教师账号密码.txt"; char tempname[] = "temp.txt"; FILE *fp, *temp; char line[100]; fp = fopen(filename, "r"); temp = fopen(tempname, "w"); char id[6]; printf("请输入删除教师工号:"); scanf("%s",&id); while (fgets(line, sizeof(line), fp)) { // 如果不包含匹配字符串,则写入临时文件 if (!strstr(line, id)) { fputs(line, temp); } } fclose(fp); fclose(temp); remove(filename); // 将临时文件重命名为原文件名 rename(tempname, filename); printf("工号为%s的教师信息删除成功,请按任意键返回\n",id); system("pause"); }运行后temp文本并没有改名
时间: 2024-01-16 22:02:45 浏览: 84
这是因为在使用 `remove` 函数删除文件之前,文件必须被关闭。在你的代码中,你已经使用了 `fclose` 函数来关闭文件,但是你在关闭文件之后才使用 `remove` 函数。因此,你需要将 `fclose(fp)` 和 `fclose(temp)` 之前加上 `remove(filename)`,然后再将临时文件重命名为原文件名。修改后的代码如下所示:
```
void cancle_password_teacher() {
char filename[] = "教师账号密码.txt";
char tempname[] = "temp.txt";
FILE *fp, *temp;
char line[100];
fp = fopen(filename, "r");
temp = fopen(tempname, "w");
char id[6];
printf("请输入删除教师工号:");
scanf("%s",&id);
while (fgets(line, sizeof(line), fp)) {
// 如果不包含匹配字符串,则写入临时文件
if (!strstr(line, id)) {
fputs(line, temp);
}
}
fclose(fp);
fclose(temp);
remove(filename); // 关闭文件后再删除原文件
rename(tempname, filename); // 将临时文件重命名为原文件名
printf("工号为%s的教师信息删除成功,请按任意键返回\n",id);
system("pause");
}
```
这样修改之后,临时文件就能够被重命名为原文件名了。
阅读全文