在c中制作和发送混合double和int数组

时间:2015-05-12 10:39:30

标签: c arrays sockets

我正在尝试从

上的表单中的套接字发送一个msg
double,int,int,int,int,...,int

N int值 我该怎么发送? 我已经打开了一个套接字但是如何将所有这些元素放在一个将被发送的数组中:

status=sendto(SendSocket,msg,sizeof(double)+N*sizeof(int),
0,(void*)&out_socketaddr,sizeof(out_socketaddr));

其中MSG是所有这些元素的内存(数组),out_socketaddr是目标

1 个答案:

答案 0 :(得分:2)

uint8_t array [sizeof(this) + sizeof(that) + ...];
uint8_t* ptr = array;

memcpy(ptr, &this, sizeof(this));
ptr+=sizeof(this);
memcpy(ptr, &that, sizeof(that));
ptr+=sizeof(that);
...

避免制作结构。虽然结构将使代码更具可读性,但它们也引入了填充,在这种情况下这将是一个问题。