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

2024-02-09

这是我的问题, 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;

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


typedef struct {
   int8_t seq;
   int8_t ack;
   bool flag;
   char data[payload];
} r_pckt;

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

r_pckt *tmp_pckt = (struct r_pckt *) &buf;

应该

r_pckt *tmp_pckt = (r_pckt *) buf;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将 char * 转换为结构? 的相关文章

随机推荐