定义一个图书类结构体(书名语文书,编号001,出版日期1月1号)变量个数为4.使用读写数据块函数,把书本信息写入文件后,再读出
时间: 2024-02-19 13:02:42 浏览: 74
好的,这是一个简单的 C++ 代码实现:
```
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 定义图书类结构体
struct Book {
string name; // 书名
string id; // 编号
string date; // 出版日期
};
// 写入数据块函数
void writeDataBlock(ofstream& ofs, Book book) {
ofs.write((char*)&book, sizeof(Book));
}
// 读取数据块函数
void readDataBlock(ifstream& ifs, Book& book) {
ifs.read((char*)&book, sizeof(Book));
}
int main() {
Book books[4] = {
{"语文书", "001", "1月1号"},
{"数学书", "002", "2月2号"},
{"英语书", "003", "3月3号"},
{"物理书", "004", "4月4号"}
};
// 写入数据
ofstream ofs("books.dat", ios::binary);
for (int i = 0; i < 4; i++) {
writeDataBlock(ofs, books[i]);
}
ofs.close();
// 读取数据
Book book;
ifstream ifs("books.dat", ios::binary);
while (!ifs.eof()) {
readDataBlock(ifs, book);
cout << "书名:" << book.name << ",编号:" << book.id << ",出版日期:" << book.date << endl;
}
ifs.close();
return 0;
}
```
这个程序首先定义了一个 `Book` 结构体,包含了书名、编号和出版日期三个属性,然后定义了写入和读取数据块的函数 `writeDataBlock` 和 `readDataBlock`,分别使用了 `ofstream` 和 `ifstream` 类型的对象来写入和读取数据。
在 `main` 函数中,首先定义了一个包含四本书的 `Book` 数组,并且使用 `ofstream` 对象把所有书本信息写入文件 `books.dat` 中,然后使用 `ifstream` 对象从 `books.dat` 中读取所有书本信息,并输出到控制台上。
注意,为了保证写入和读取的数据能够一一对应,我们在写入数据块时使用了 `sizeof(Book)` 来指定写入的数据块大小,在读取数据块时也使用了相同的方式来读取数据。
阅读全文