C语言将文件读成结构体
时间: 2024-05-09 13:21:27 浏览: 23
下面是一个示例代码,演示了如何将文件读成结构体:
```c
#include <stdio.h>
struct student {
char name[20];
int age;
double score;
};
int main() {
FILE *fp;
struct student stu;
fp = fopen("students.dat", "rb");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
while (fread(&stu, sizeof(struct student), 1, fp) == 1) {
printf("Name: %s\n", stu.name);
printf("Age: %d\n", stu.age);
printf("Score: %lf\n\n", stu.score);
}
fclose(fp);
return 0;
}
```
这段代码中,我们定义了一个名为`student`的结构体,包含了学生的姓名、年龄和成绩。然后我们打开了一个名为`students.dat`的文件,打开方式为二进制读取。接着,我们使用`fread`函数从文件中读取结构体数据,直到读取完整个文件。最后,我们关闭了文件并退出程序。
需要注意的是,在读取结构体时,我们使用了`&stu`这个地址运算符,这是因为`fread`函数需要一个指向内存的指针来存储读取到的数据。另外,我们在`fread`函数中指定了`sizeof(struct student)`作为每次读取的字节数,这是因为我们要读取的是一个`student`结构体。最后一个参数`1`表示我们要读取的结构体数量为1。
如果你的文件中存储了多个结构体,你需要使用循环来逐个读取,直到读取完整个文件。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)
![](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)