假设我有两个变量如下:
typedef struct{
int proc;
int id;
int value;
int last;
} my_struct;
struct my_struct dummy;
int len = 3*sizeof(int);
char my_msg[len];
//Some assignments are done here on those variables
现在,我想通过在dummy
上写my_msg
的内容来删除memcpy(&dummy, my_msg, size);
的内容。那么下面哪一个是更好的方法呢?
&dummy = (my_struct *) my_msg;
或
{{1}}
答案 0 :(得分:6)
除了你的语法有点错误之外,你的类型转换具有未定义的行为,因为你的结构可能由于填充而具有不同的大小,并且具有特定的对齐属性。不要这样做。
答案 1 :(得分:1)
都不是, 你可以使用xdr来序列化&反序列化或类似的东西
可能的xdr库 http://xstream.sourceforge.net/
还有一件事要教育自己 Find holes in C structs due to alignment
答案 2 :(得分:0)
typedef struct{
int proc;
int id;
int value;
int last;
} my_struct;
my_struct dummy;
void main(){
char my_msg[ sizeof(my_struct) ];
memcpy(&dummy, &my_msg, sizeof(my_struct) );
}
当我开发网络程序时,我通过C结构传输信息。我可以通过这种方式恢复信息