是否可以将char*转换为结构?

fab*_*lin 4 c udp

这是我的问题,其中一个rcvfrom()参数是一个char*,一旦我从中获取数据,我想将它转换为结构.但是,演员阵容不成功.我究竟做错了什么?

这是我做的:

struct {
   int8_t seq;
   int8_t ack;
   bool flag;
   char data[payload];
}r_pckt;
//...bunch of codes

char *buf = NULL;
buf = (char *)malloc (sizeof(char) * MTU);
memset(buf, 0, MTU);
//...

res = recvfrom(socket_fd, buf, MTU, 0,(struct sockaddr *) &cli_addr, (socklen_t *)&cli_len);
//..
r_pckt *tmp_pckt = (struct r_pckt *) &buf;
Run Code Online (Sandbox Code Playgroud)

它不起作用.有任何想法吗?谢谢.

Eri*_*rik 10

typedef struct {
   int8_t seq;
   int8_t ack;
   bool flag;
   char data[payload];
} r_pckt;
Run Code Online (Sandbox Code Playgroud)

上面使r_pckt成为一个类型,而不是一个变量.然后,

r_pckt *tmp_pckt = (struct r_pckt *) &buf;
Run Code Online (Sandbox Code Playgroud)

应该

r_pckt *tmp_pckt = (r_pckt *) buf;
Run Code Online (Sandbox Code Playgroud)