C语言结构体如何存入文件?

Python021

C语言结构体如何存入文件?,第1张

最好用2进制方法打开文件,用fwrite 写文件。读时也用用2进制方法打开文件,用fread读.\x0d\x0a这样,写的时候按整个结构写,读也按整个结构读,字符串有空白也没关系。\x0d\x0aFILE *fp\x0d\x0a \x0d\x0afp=fopen("my.dat","wb")\x0d\x0afwrite(&stu,sizeof(stu),1,fp)// 写1个结构\x0d\x0afor (i=0i 回答于 2022-11-16

C语言中对结构体数据格式文件进行读取时,必须以二进制格式打开文件,然后按结构体类型变量内存块方式进行数据读取,相关读数据命令为fread()。

函数说明:

#include <stdio.h>

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

从stream文件流中,读取nmemb个size大小的数据块到ptr所指的内存buf中,返回读取到的有效数据块数。

如,有如下结构体定义:

typedef struct TEST

{

int num

double score

}STRTEST

STRTEST data

FILE *fp = fopen("file.dat", "rb" ) //按二进制格式打开文件

int n=fread( &data, sizeof(STRTEST), 1, fp )//读取一个数据块到变量data中。

注意,当结构体中定义的变量有指针类型时,在存储数据时,就不能按结构体进行存储了。

因为,指针变量中存储的是内存地址,而程序在不同环境运行时,所使用的内存地址是不同的,只存储内存地址,不能把真正的数据保存下来,所以,即使是正确读取到文件内容,也不能得到当时的结构体内存数据。因而,在存储结构体数据时,要根据结构体类型变量特点采用正确的方法进行存储,才能正确的读取。