自从我和C玩了两天后,我一直遇到新问题。现在我想做的事情MEMCOPY我的数据到一个char buf中,但我遇到了一些问题:我的代码如下:memcpy的使用()
int main(int argc, char *argv[])
{
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
unsigned char buf[1024];
struct profile_t
{
unsigned char length;
unsigned char type;
unsigned char *data;
};
typedef struct profile_datagram_t
{
unsigned char src[4];
unsigned char dst[4];
unsigned char ver;
unsigned char n;
struct profile_t profiles[MAXPROFILES];
} header;
header outObj;
outObj.src[0] =1;
outObj.dst[0] = 2;
outObj.ver = 1;
outObj.n = 2;
outObj.profiles[0].length = 10;
outObj.profiles[0].type = 1;
outObj.profiles[1].length = 10;
outObj.profiles[1].type = 2;
memcpy(buf,outObj.src,4);
memcpy(buf+4,outObj.dst,4);
memcpy(buf+8,outObj.ver,1);
memcpy(buf+9,outObj.n,2);
memcpy(buf+10,outObj.profiles[0].length,1);
memcpy(buf+11,outObj.profiles[0].type,1);
memcpy(buf=12,outObj.profiles[0].data,10);
我收到以下错误:
warning: passing argument 2 of
memcpy
makes pointer from integer without a cast
error: incompatible types when assigning to typeunsigned char[1024]
from typeint
的错误是为memcpy()
。任何人都可以向我解释有关memcpy()
以及我错误的地方。
不相关:最后一行中的'buf = 12'会编译但是做错误的事情... – sth
@sth:真的吗?我相信这是他的不兼容类型错误的来源。现在,如果'buf'是一个指针... – user7116
@sixlettervariables'buf = 12'被用作'memcpy'的目的地。这意味着它将尝试写入地址'12'。 – David