私はCで遊んでいるので、私は常に新しい問題を抱えています。今、私は、char bufのに自分のデータをmemcopyやりたいが、私はいくつかの問題に遭遇しています:私のコードは以下の通りです: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