使用结构数组实现学生信息数据的录入和文件的读写
时间: 2024-03-20 13:44:09 浏览: 89
好的,以下是一个基本的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Student {
int id;
char name[50];
int age;
float score;
};
int main() {
struct Student students[100]; // 最多存储100个学生的信息
int count = 0; // 已经录入的学生数量
int choice;
do {
printf("请选择功能:\n");
printf("1. 录入学生信息\n");
printf("2. 保存学生信息到文件\n");
printf("3. 从文件中读取学生信息\n");
printf("4. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
// 录入学生信息
if (count >= 100) {
printf("已经达到最大存储数量,不能再录入了!\n");
break;
}
struct Student s;
printf("请输入学生的信息:\n");
printf("学号:");
scanf("%d", &s.id);
printf("姓名:");
scanf("%s", s.name);
printf("年龄:");
scanf("%d", &s.age);
printf("成绩:");
scanf("%f", &s.score);
students[count++] = s;
printf("录入成功!\n");
break;
case 2:
// 保存学生信息到文件
if (count == 0) {
printf("没有学生信息可以保存!\n");
break;
}
FILE *fp;
fp = fopen("students.dat", "wb"); // 以二进制写入的方式打开文件
if (fp == NULL) {
printf("文件打开失败!\n");
break;
}
fwrite(students, sizeof(struct Student), count, fp);
fclose(fp);
printf("保存成功!\n");
break;
case 3:
// 从文件中读取学生信息
FILE *fp2;
fp2 = fopen("students.dat", "rb"); // 以二进制读取的方式打开文件
if (fp2 == NULL) {
printf("文件打开失败!\n");
break;
}
int n = fread(students, sizeof(struct Student), 100, fp2);
count = n; // 更新已经录入的学生数量
fclose(fp2);
printf("读取成功!\n");
break;
case 4:
// 退出程序
printf("程序已经退出!\n");
exit(0);
default:
printf("输入错误,请重新输入!\n");
break;
}
} while (1);
return 0;
}
```
上面的代码实现了一个简单的菜单,可以让用户选择录入学生信息、保存学生信息到文件、从文件中读取学生信息、退出程序等功能。其中,录入学生信息和保存学生信息到文件的实现已经在之前的回答中提到,读取学生信息的实现也类似,这里就不再赘述了。
阅读全文