为了账号安全,请及时绑定邮箱和手机立即绑定

我这样赋值,输出的时候会报错....为什么呢

我这样赋值,输出的时候会报错....为什么呢

月关宝盒 2023-02-11 17:13:52
结构体是这样的struct bf{unsigned char header;unsigned char length;unsigned char address;unsigned char command;unsigned char x[3];unsigned char y[3];unsigned char z[3];unsigned char checksum;  };将下面这串字符串赋值取出一部分 赋值给上面的结构体unsigned char a[] = {0x68,0x0D,0x00,0x04,0x20,0x10,0x10,0x58,0x00,0x04,0x05,0x00,0x00,0x32,0x68,0x0D,0x00,0x84,0x20,0x10,0x10,0x58,0x00,0x04,0x05,0x00,0x00,0x32,0x68,0x0D};struct bf *buff;buff = (struct bf *)malloc(sizeof(struct bf));memcpy(buff,getbuf,14);
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超5个赞

结构体赋值要求是内存对齐的。请问您这个字符串对齐了么?

查看完整回答
反对 回复 2023-02-15
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

常用的方法是:直接强制类型转换。
前提是:1、接收的数据是先低后高的,2、结构体按1字节对齐

#program pack(push) 
#program pack(1)
结构体定义。。。
#program pack(pop)

struct bf * buff = NULL;
buff = (bf*)&a[0];//呵,当然a也可以


查看完整回答
反对 回复 2023-02-15
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号