首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-11 
如何将 char*强制转换为结构体,此结构体是混合类型的,有long,有char结构体类型为此:typedef struct _Rec{l

如何将 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

热点排行
Bad Request.