我有这样的结构:
struct x{
int a;
int b;
int c;
}
我有一个这样的数组:
unsigned char bytes[8];
bytes[0] = 1
bytes[1] = 128
bytes[2] = 0
bytes[3] = 0
bytes[4] = 255
bytes[5] = 255
bytes[6] = 0
bytes[7] = 0
我想在struct element" a",bytes [4]到struct [6]中将字节[0]复制到struct element" b" struct element" c"中的字节[7]。我必须使用memcpy。 我怎样才能做到这一点?请帮忙。
我的尝试:
struct x test;
memcpy( &test.a, bytes, 4);
memcpy( &test.b, bytes + 4, 3);
memcpy( &test.c, bytes + 7, 1);
但是每次运行它都会显示不同的结果。
答案 0 :(得分:3)
在您的代码中,您不会初始化test
。所以最终发生的事情是:
例如,如果你memcpy( &test.b, bytes + 4, 3);
sizeof(int) == 4
,那么你很可能只写3个字节,因此一个字节未定义。
尝试一些简单的方法,比如初始化对象:
struct x test = {0};