c语言中将结构体写入文件,C语言中将结构体写入文件

可以使用fwrite()将一个结构体写入文件:

fwrite(&some_struct,sizeof somestruct,1,fp);

对应的fread函数可以再把它读出来,此处fwrite受到一个结构的指针并把这个结构的内存映像作为字节流写入文件。sizeof操作符计算出结构占用的字节数。

但是这样用内存映像写出的数据文件却是不能够移植的,尤其是当结构中包含浮点成员或指针的时候。结构的内存布局跟机器和编译器都有关。不同的编译器可能使用不同数量的填充位,不同机器上基本类型的大小和字节顺序也不尽相同。因此,作为内存映像写出的结构在别的机器上(甚至是被别的编译器编译之后)不一定能被读回来。

同时注意如果结构包含任何指针(char*字符串或指向其他数据结构的指针),则只有指针值会被写入文件。当它们再次被读回来的时候可能已经失效。最后为了广泛的可移植性,你必需用“b”标志打开文件。

读写结构体的程序如下:

将结构体写入文件:

81178cc93a2a3bb5048d90d76e7ec935.png

69c5a8ac3fa60e0848d784a6dd461da6.png

#include 

#include 

typedef

struct {

char c;

int h;

short n;

long m;

float f;

double d1;

char *s;

double d2;

}st;

int main(

void)

{

FILE *fp;

st sa,sb;

char *str=

"

abcdefg

";

sa.c=

'

K

';

sa.h=-

3;

你可能感兴趣的:(c语言中将结构体写入文件)