将结构体数组存入文件
时间: 2024-06-14 14:04:08 浏览: 104
以下是将结构体数组存入文件的示例代码:
```cpp
#include <iostream>
#include <fstream>
struct Person {
std::string name;
int age;
};
int main() {
// 创建结构体数组
Person people[3];
people[0] = {"Alice", 25};
people[1] = {"Bob", 30};
people[2] = {"Charlie", 35};
// 打开文件
std::ofstream file("people.txt");
// 将结构体数组写入文件
for (int i = 0; i < 3; i++) {
file << people[i].name << " " << people[i].age << std::endl;
}
// 关闭文件
file.close();
return 0;
}
```
这段代码创建了一个名为`Person`的结构体,包含了姓名和年龄两个成员变量。然后创建了一个包含3个`Person`结构体的数组`people`,并给数组中的每个元素赋值。接下来,打开名为`people.txt`的文件,并将结构体数组的内容逐行写入文件中。最后,关闭文件。
相关问题
创建结构体数组存入文件中
好的,我可以为您提供一个简单的示例程序来演示如何创建结构体数组并将其存入文件中。以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
typedef struct {
int id;
char name[20];
float score;
} Student;
int main() {
// 创建结构体数组
Student students[3];
students[0].id = 1;
strcpy(students[0].name, "Tom");
students[0].score = 90.5;
students[1].id = 2;
strcpy(students[1].name, "Jane");
students[1].score = 88.0;
students[2].id = 3;
strcpy(students[2].name, "Mike");
students[2].score = 92.0;
// 打开文件
FILE *fp;
fp = fopen("students.dat", "wb");
if (fp == NULL) {
printf("Error opening file!\n");
exit(1);
}
// 将结构体数组写入文件中
fwrite(students, sizeof(Student), 3, fp);
// 关闭文件
fclose(fp);
return 0;
}
```
在上面的示例代码中,我们首先定义了一个名为 Student 的结构体,其中包含了学生的编号、姓名和成绩三个属性。然后,在主函数中,我们创建了一个包含三个元素的结构体数组,并且为每个元素分别赋值。接着,我们打开了一个名为 students.dat 的文件,并将其以二进制写入模式打开。如果文件打开失败,则程序会输出错误信息并退出。接下来,我们使用 fwrite 函数将结构体数组写入文件中。最后,我们关闭了文件并结束了程序的执行。
注意,写入文件时,我们使用了 fwrite 函数,该函数的第一个参数是指向要写入的数据的指针,第二个参数是每个元素的大小,第三个参数是要写入的元素数量,第四个参数是文件指针。在我们的示例中,我们将结构体数组 students 写入文件中,每个元素的大小为 sizeof(Student) ,元素数量为 3。
希望这个示例程序能够帮助您了解如何创建结构体数组并将其存入文件中。
c语言结构体数组存入文件
在C语言中,结构体数组可以使用文件操作函数(如`fopen()`, `fwrite()`, 和 `fclose()`)来存储到磁盘文件中。下面是步骤和示例:
1. 定义结构体和结构体数组:
```c
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Person;
Person people; // 假设我们有一个3个元素的人员信息数组
```
2. 创建文件并写入数据:
```c
FILE* file = fopen("people_data.txt", "w"); // 打开或创建文件,"w"表示写入模式
if (file == NULL) {
printf("Failed to open the file.\n");
return 1;
}
// 写入每个结构体成员
for (int i = 0; i < sizeof(people) / sizeof(people); i++) {
fprintf(file, "%d %s\n", people[i].id, people[i].name);
}
fclose(file); // 关闭文件
```
这里使用`fprintf()`函数写入整数和字符串,每个结构体元素之间用`\n`分隔。
3. 读取文件内容:
```c
file = fopen("people_data.txt", "r"); // 更改为"r"以读取模式
if (file == NULL) {
printf("Failed to open the file for reading.\n");
return 1;
}
char line[100];
Person loaded_people; // 初始化接收结构体的数组
while (fgets(line, sizeof(line), file)) {
// 解析行,假设格式是"id name"
sscanf(line, "%d %[^ ]", &loaded_people[i].id, loaded_people[i].name);
i++;
if (i == sizeof(loaded_people) / sizeof(loaded_people)) break; // 防止溢出
}
fclose(file);
```
4. 相关问题:
阅读全文