在c语言中,如何把存放在文件中的学生信息删除,用结构体的形式写出代码
时间: 2024-03-10 07:46:44 浏览: 60
可以使用文件读写和结构体操作来实现删除学生信息的功能。具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
struct student {
int id; // 学号
char name[20]; // 姓名
int score; // 成绩
};
int main() {
FILE *fp, *temp;
struct student stu;
int id, found = 0;
// 打开文件
fp = fopen("students.dat", "rb");
if (fp == NULL) {
printf("Error: cannot open file!\n");
exit(1);
}
// 创建临时文件
temp = fopen("temp.dat", "wb");
if (temp == NULL) {
printf("Error: cannot create file!\n");
exit(1);
}
// 输入要删除的学生学号
printf("Enter the student ID to delete: ");
scanf("%d", &id);
// 逐个读取学生信息,如果学号匹配则跳过该学生,否则将学生信息写入临时文件
while (fread(&stu, sizeof(stu), 1, fp) == 1) {
if (stu.id == id) {
found = 1;
continue;
}
fwrite(&stu, sizeof(stu), 1, temp);
}
// 关闭文件
fclose(fp);
fclose(temp);
// 删除原文件,将临时文件重命名为原文件名
if (found) {
remove("students.dat");
rename("temp.dat", "students.dat");
printf("Student information deleted successfully.\n");
} else {
remove("temp.dat");
printf("Error: student not found!\n");
}
return 0;
}
```
以上代码中,首先定义了一个学生结构体 `struct student`,包含学号、姓名和成绩三个属性。然后使用文件读写操作,从文件中逐个读取学生信息,如果学号匹配则跳过该学生,否则将学生信息写入临时文件。最后删除原文件,将临时文件重命名为原文件名,完成学生信息删除的操作。
阅读全文