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