c语言结构体数组存入文件_请问怎么把结构体数组里的内容用fwrite写到文本文件?多谢...

本文介绍了如何使用C语言的fwrite函数将结构体数组的内容写入文本文件。示例代码展示了如何操作,并提供了不同字节对齐方式对结构体成员偏移量的影响。
摘要由CSDN通过智能技术生成

请教如何把结构体数组里的内容用fwrite写到文本文件?谢谢

请教如何把结构体数组里的内容用fwrite写到文本文件?谢谢

或者其它的和fwrite一样快速的方法?

------解决思路----------------------

这跟写入一般变量是一样的,参考例子:

struct A

{

int data;

};

int main()

{

A a;

a.data = 1;

FILE* pfile;

pfile = fopen("test.txt", "w");

fwrite(&a, sizeof(a), 1, pfile);

fclose(pfile);

return 0;

}

------解决思路----------------------

仅供参考:#include 

#define field_offset(s,f) (int)(&(((struct s *)(0))->f))

struct AD  { int a; char b[13]; double c;};

#pragma pack(push)

#pragma pack(1)

struct A1  { int a; char b[13]; double c;};

#pragma pack(2)

struct A2  { int a; char b[13]; double c;};

#pragma pack(4)

struct A4  { int a; char b[13]; double c;};

#pragma pack(8)

struct A8  { int a; char b[13]; double c;};

#pragma pack(16)

struct A16 { int a; char b[13]; double c;};

#pragma pack(pop)

int main() {

printf("AD.a %d\n",field_offset(AD,a));

printf("AD.b %d\n",field_offset(AD,b));

printf("AD.c %d\n",field_offset(AD,c));

printf("\n");

printf("A1.a %d\n",field_offset(A1,a));

printf("A1.b %d\n",field_offset(A1,b));

printf("A1.c %d\n",field_offset(A1,c));

printf("\n");

printf("A2.a %d\n",field_offset(A2,a));

printf("A2.b %d\n",field_offset(A2,b));

printf("A2.c %d\n",field_offset(A2,c));

printf("\n");

printf("A4.a %d\n",field_offset(A4,a));

printf("A4.b %d\n",field_offset(A4,b));

printf("A4.c %d\n",field_offset(A4,c));

printf("\n");

printf("A8.a %d\n",field_offset(A8,a));

printf("A8.b %d\n",field_offset(A8,b));

printf("A8.c %d\n",field_offset(A8,c));

printf("\n");

printf("A16.a %d\n",field_offset(A16,a));

printf("A16.b %d\n",field_offset(A16,b));

printf("A16.c %d\n",field_offset(A16,c));

printf("\n");

return 0;

}

//AD.a 0

//AD.b 4

//AD.c 24

//

//A1.a 0

//A1.b 4

//A1.c 17

//

//A2.a 0

//A2.b 4

//A2.c 18

//

//A4.a 0

//A4.b 4

//A4.c 20

//

//A8.a 0

//A8.b 4

//A8.c 24

//

//A16.a 0

//A16.b 4

//A16.c 24

//

//

------解决思路----------------------

https://www.baidu.com/s?wd=winhex%E6%95%99%E7%A8%8B&rsp=4&f=1&oq=WinHex&tn=baiduhome_pg&ie=utf-8&usm=1&rsv_idx=2&rsv_pq=f96434d900082d2a&rsv_t=57e2tJP6il%2BLmOmz%2BAI55pGTS1gmXa4qFL2oozXa%2FUPT0uvvvfp62zB2APNqZfV7dEq%2B&rsv_ers=xn1&rs_src=0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值