使用c++完成:从键盘输入学生学号、班级、姓名、成绩等信息存放到二进制文件中,并查看二进制文件的学生信息。
时间: 2024-01-24 14:03:58 浏览: 100
好的,我可以帮您解答这个问题。以下是使用 C++ 完成该任务的示例代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Student {
int id; // 学号
string class_; // 班级
string name; // 姓名
double score; // 成绩
};
int main() {
ofstream fout;
ifstream fin;
string filename = "student.dat";
Student stu;
int n;
// 从键盘输入学生信息
cout << "请输入学生个数:";
cin >> n;
// 打开二进制文件
fout.open(filename.c_str(), ios::binary);
if (!fout) {
cout << "无法打开文件 " << filename << endl;
exit(1);
}
// 将学生信息写入文件
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> stu.id;
cout << "班级:";
cin >> stu.class_;
cout << "姓名:";
cin >> stu.name;
cout << "成绩:";
cin >> stu.score;
fout.write((char*)&stu, sizeof(Student));
}
// 关闭文件
fout.close();
// 打开二进制文件
fin.open(filename.c_str(), ios::binary);
if (!fin) {
cout << "无法打开文件 " << filename << endl;
exit(1);
}
// 读取学生信息并输出
cout << "学号\t班级\t姓名\t成绩" << endl;
while (fin.read((char*)&stu, sizeof(Student))) {
cout << stu.id << "\t" << stu.class_ << "\t" << stu.name << "\t" << stu.score << endl;
}
// 关闭文件
fin.close();
return 0;
}
```
在上面的代码中,我们首先定义了一个名为 `Student` 的结构体,包含了学生的学号、班级、姓名和成绩四个字段。然后,我们通过文件流对象 `ofstream` 打开名为 `student.dat` 的二进制文件,并将从键盘输入的学生信息写入文件中,最后再通过文件流对象 `ifstream` 读取文件中的学生信息并输出。
需要注意的是,写入和读取二进制文件时需要使用 `write` 和 `read` 函数,并且写入的数据大小应与结构体的大小相等。同时,输入字符串时需要使用 `cin` 函数,不需要特别处理回车符。
阅读全文