c语言把结构体数组写进文件
时间: 2023-11-05 11:04:20 浏览: 56
首先,你需要定义一个结构体和一个结构体数组。例如:
```c
#include <stdio.h>
struct Person {
char name[20];
int age;
};
struct Person people[10] = {
{"Tom", 20},
{"Jerry", 25},
{"Alice", 30},
{"Bob", 35},
{"Lucy", 40},
{"John", 45},
{"Mary", 50},
{"David", 55},
{"Kate", 60},
{"Sam", 65}
};
```
然后,你需要打开一个文件,并将结构体数组写入该文件。可以使用 `fwrite` 函数将结构体数组写入文件。例如:
```c
FILE *fp;
fp = fopen("people.dat", "wb"); // 打开二进制文件
fwrite(people, sizeof(struct Person), 10, fp); // 将结构体数组写入文件
fclose(fp); // 关闭文件
```
在这个例子中,我们打开一个名为 `people.dat` 的二进制文件,将 `people` 结构体数组写入文件中,并关闭文件。
注意,写入文件时需要指定二进制模式,即 `"wb"`,而不是 `"w"`。这是因为在二进制模式下,数据不会被转换成文本格式,而是以原始二进制格式写入文件。
相关问题
c语言fwrite 结构体数组写入文件 fread下读取文件到结构体数组
下面是一个简单的例子,演示如何使用 `fwrite` 函数将结构体数组写入文件,以及使用 `fread` 函数从文件中读取数据到结构体数组:
```c
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[20];
int age;
float score;
};
int main()
{
FILE *fp;
char filename[] = "example.bin";
struct student stu[3] = {{"Tom", 18, 90.5}, {"Jerry", 19, 88.6}, {"Alice", 20, 92.0}};
struct student read_stu[3];
int i;
// 写入结构体数组到文件
fp = fopen(filename, "wb");
fwrite(stu, sizeof(struct student), 3, fp);
fclose(fp);
// 从文件中读取数据到结构体数组
fp = fopen(filename, "rb");
fread(read_stu, sizeof(struct student), 3, fp);
fclose(fp);
// 打印读取到的结构体数组内容
for(i = 0; i < 3; i++)
{
printf("name: %s, age: %d, score: %.1f\n", read_stu[i].name, read_stu[i].age, read_stu[i].score);
}
return 0;
}
```
上述代码定义了一个 `student` 结构体,包含了学生的姓名、年龄和成绩。首先,使用 `fwrite` 函数将结构体数组 `stu` 写入到名为 `example.bin` 的二进制文件中。然后,使用 `fread` 函数从文件中读取数据到结构体数组 `read_stu` 中,并打印出读取到的结构体数组内容。
需要注意的是,写入和读取的结构体数组的大小必须一致,否则可能会导致数据读取错误。
c语言结构体数组写入二进制文件
你可以使用以下步骤将C语言结构体数组写入二进制文件:
1. 定义一个结构体,其中包含你想要保存的数据。例如:
```c
typedef struct {
int id;
char name[20];
float score;
} Student;
```
2. 创建一个结构体数组,并初始化数据。例如:
```c
Student students[3] = {
{1, "Alice", 95.5},
{2, "Bob", 87.0},
{3, "Charlie", 78.5}
};
```
3. 打开一个文件,以二进制写入模式打开。例如:
```c
FILE* file = fopen("students.bin", "wb");
if (file == NULL) {
printf("无法打开文件\n");
return -1;
}
```
4. 将结构体数组写入文件。例如:
```c
fwrite(students, sizeof(Student), 3, file);
```
这里的参数依次是:结构体数组的首地址、每个结构体的大小、结构体的个数、文件指针。
5. 关闭文件。例如:
```c
fclose(file);
```
现在,你的结构体数组已成功写入二进制文件 "students.bin" 中。