结构体数组存取文件中
时间: 2024-06-23 19:00:27 浏览: 7
在C/C++中,结构体数组可以用来存储和操作文件中的数据。当你有一个自定义的数据结构(结构体),并且你需要将多个这样的结构体实例保存到文件中,或者从文件中读取并处理它们,结构体数组是一个非常实用的方法。
首先,你需要定义一个结构体,比如:
```cpp
struct Record {
int id;
float value;
// 其他可能的成员...
};
```
然后,你可以创建一个结构体数组,例如:
```cpp
Record records[100]; // 假设你有100个记录
```
要将结构体数组写入文件,你可以使用`fwrite()`函数:
```cpp
#include <fstream>
std::ofstream file("data.txt", std::ios::binary);
if (file.is_open()) {
for (int i = 0; i < 100; i++) {
file.write(reinterpret_cast<char*>(&records[i]), sizeof(Record));
}
file.close();
} else {
std::cerr << "Unable to open file" << std::endl;
}
```
从文件读取时,使用`fread()`或`ifstream`:
```cpp
std::ifstream inputFile("data.txt", std::ios::binary);
if (inputFile.is_open()) {
inputFile.seekg(0, std::ios::end);
size_t fileSize = inputFile.tellg();
inputFile.seekg(0, std::ios::beg);
Record* buffer = new Record[fileSize / sizeof(Record)];
inputFile.read(reinterpret_cast<char*>(buffer), fileSize);
for (int i = 0; i < 100; i++) {
// 解析并操作每个Record
// buffer[i].id = ...;
// buffer[i].value = ...;
}
delete[] buffer;
inputFile.close();
} else {
std::cerr << "Unable to open file" << std::endl;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)