专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

怎么将 char*强制转换为结构体,此结构体是混合类型的,有long,有char

发布时间:2011-06-28 20:10:45 文章来源:www.iduyao.cn 采编人员:星星草
如何将 char*强制转换为结构体,此结构体是混合类型的,有long,有char
结构体类型为此:
typedef struct _Rec
{
  long origin_id;  
  char rerch_id[5];  
  char fermno_id[6];  
  char lard_id[7];  
  char trade_type;  
  char App_id[10];  
  long Sys_exp;  
  long Cup_exp;  
} Rec;
字符串为char*ss = "0001aaaaabbbbbbcccccccmssssssssss00030006";

------解决方案--------------------
int size = strlen(ss);
Rec * p = new Rec;
memcpy(p, ss, size);
------解决方案--------------------
1.内存拷贝,楼上已经说了。
2.
Rec rec = *(Rec *)ss;
理论上应该可以。
-
但是不建议用强制转换。
楼主这个是32位的环境,如果是16位或64位的环境,很明显数据就错乱了。
大量的代码,这样的错误不好找。
------解决方案--------------------
请楼上的各位大神 别误导人好么,你仔细看眼 struct _Rec 明显内存不对齐,内部有大量的空位,你memcpy 能 copy 我就给跪了 

3楼正解 你只能写一个解析函数 然后 再手动赋值给 struct _Rec
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: