编写并测试程序:(文件随机读写程序) 将3名学生的学号、姓名和成绩写入二进制文件studentinfo.dat中,再将第2名学生的成绩改为627,最后从文件中读取第m(m的值由用户从键盘输入)名学生的信息并将其输出到屏幕上。c++编写
时间: 2024-03-22 08:39:52 浏览: 65
c++ 这个程序实现了学生的信息录入和输出,
以下是一个简单的文件随机读写程序,可以满足您的要求:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 定义学生结构体
struct Student {
int id;
string name;
int score;
};
int main() {
// 创建3个学生对象
Student s1 = {1, "Tom", 85};
Student s2 = {2, "Jack", 92};
Student s3 = {3, "Jerry", 78};
// 将学生信息写入文件
ofstream ofs("studentinfo.dat", ios::binary);
ofs.write((char*)&s1, sizeof(s1));
ofs.write((char*)&s2, sizeof(s2));
ofs.write((char*)&s3, sizeof(s3));
ofs.close();
// 修改第2名学生的成绩
ifstream ifs("studentinfo.dat", ios::binary);
ifs.seekg(sizeof(Student)); // 定位到第2个学生的位置
Student s;
ifs.read((char*)&s, sizeof(s));
s.score = 627;
ifs.seekp(sizeof(Student));
ifs.write((char*)&s, sizeof(s));
ifs.close();
// 读取第m名学生的信息并输出到屏幕上
int m;
cout << "请输入要查询的学生编号:";
cin >> m;
ifs.open("studentinfo.dat", ios::binary);
ifs.seekg((m - 1) * sizeof(Student));
ifs.read((char*)&s, sizeof(s));
cout << "学号:" << s.id << endl;
cout << "姓名:" << s.name << endl;
cout << "成绩:" << s.score << endl;
ifs.close();
return 0;
}
```
在这个程序中,我们首先定义了一个学生结构体,其中包含学号、姓名和成绩三个成员变量。然后我们创建了3个学生对象,并将它们写入二进制文件studentinfo.dat中。
接着,我们通过文件随机读写的方式,找到第2个学生的位置,并将其成绩改为627。这里我们使用了`seekg`和`seekp`函数来进行文件指针的定位,`read`和`write`函数来进行读写操作。
最后,我们通过用户输入的方式获取要查询的学生编号m,再通过文件随机读写的方式,找到第m个学生的位置,并将其信息输出到屏幕上。
阅读全文