.编写并测试程序:(输入输出流的write、read函数程序) 首先将3名学生的学号、姓名和成绩写入二进制文件studentinfo.dat中,然后将该文件中的数据读到结构体数组中,并将其输出到屏幕上。 c++编写
时间: 2024-03-22 10:39:52 浏览: 85
以下是一个简单的使用输入输出流的write、read函数的程序,可以满足您的要求:
```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();
// 从文件中读取学生信息并输出到屏幕上
ifstream ifs("studentinfo.dat", ios::binary);
Student students[3];
ifs.read((char*)&students, sizeof(students));
ifs.close();
for (int i = 0; i < 3; i++) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "成绩:" << students[i].score << endl;
}
return 0;
}
```
在这个程序中,我们首先定义了一个学生结构体,其中包含学号、姓名和成绩三个成员变量。然后我们创建了3个学生对象,并将它们写入二进制文件studentinfo.dat中。
接着,我们通过输入输出流的write函数,将学生信息写入文件中。这里我们使用了`ofstream`类来创建输出流对象,并指定打开文件的方式为二进制写入。
最后,我们通过输入输出流的read函数,将文件中的学生信息读取到结构体数组中,并将其输出到屏幕上。这里我们使用了`ifstream`类来创建输入流对象,并指定打开文件的方式为二进制读取。注意,我们需要将读取到的二进制数据强制转换为结构体数组类型。
需要注意的是,这种方式读取文件中的数据时,需要确保结构体的定义和写入时的顺序和类型一致,否则可能会导致读取到的数据出现错误。
阅读全文