从键盘输入学生学号、班级、姓名、成绩等信息存放到二进制文件中,并查看二进制文件的学生信息。
时间: 2023-08-16 08:03:43 浏览: 117
好的,我可以帮您解答这个问题。首先,我们需要定义一个学生信息的结构体,包括学号、班级、姓名和成绩等字段。然后,我们可以通过文件操作函数将这些信息存储到二进制文件中,并读取文件中的学生信息进行查看。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int id; // 学号
char class[20]; // 班级
char name[20]; // 姓名
float score; // 成绩
} Student;
int main() {
FILE *fp;
char filename[] = "student.dat";
Student stu;
int n;
// 从键盘输入学生信息
printf("请输入学生个数:");
scanf("%d", &n);
getchar(); // 去掉回车符
// 打开二进制文件
fp = fopen(filename, "wb");
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
// 将学生信息写入文件
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &stu.id);
printf("班级:");
scanf("%s", stu.class);
printf("姓名:");
scanf("%s", stu.name);
printf("成绩:");
scanf("%f", &stu.score);
fwrite(&stu, sizeof(Student), 1, fp);
getchar(); // 去掉回车符
}
// 关闭文件
fclose(fp);
// 打开二进制文件
fp = fopen(filename, "rb");
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
// 读取学生信息并输出
printf("学号\t班级\t姓名\t成绩\n");
while (fread(&stu, sizeof(Student), 1, fp) == 1) {
printf("%d\t%s\t%s\t%.2f\n", stu.id, stu.class, stu.name, stu.score);
}
// 关闭文件
fclose(fp);
return 0;
}
```
在上面的代码中,我们首先定义了一个名为 `Student` 的结构体,包含了学生的学号、班级、姓名和成绩四个字段。然后,我们通过文件操作函数 `fopen` 打开名为 `student.dat` 的二进制文件,并将从键盘输入的学生信息写入文件中,最后再读取文件中的学生信息并输出。
需要注意的是,读写二进制文件时需要使用 `fwrite` 和 `fread` 函数,并且写入的数据大小应与结构体的大小相等。此外,输入字符串时需要使用 `scanf` 函数,但需要注意避免读取到多余的回车符。
阅读全文