我想构建一个struct
并包含int和char变量。这是我的代码:
typedef struct {
uint16_t type;
uint16_t sn;
int data1;
int data2;
char crc[1024];
}packet_t;
然后我使用方法创建struct
:
packet_t packetCreate(uint16_t type,uint16_t sn, uint16_t data1,
uint16_t data2, char crc[1024])
{
packet_t packet;
packet.type = type;
packet.sn = sn;
packet.data1 = data1;
packet.data2 = data2;
packet.crc = crcr;
return packet;
}
我也在代码中定义了相应的变量。但是当我编译代码时,它不起作用并显示:
在行中类型为'char *'的类型'char [1024]'时不兼容的类型:packet.crc = crcr; 我该如何定义和使用结构?我想构建包含char字符串的struct,所以我可以存储CRC字符串的数据。
答案 0 :(得分:3)
答案 1 :(得分:3)
你不能将字符串分配给另一个字符串。喜欢
if any(x in a for x in b):
以上方法错了。 您需要在库字符串中使用命令 strcpy 。
packet.crc = crc;
不要忘记调用库 string.h 。
答案 2 :(得分:2)
您无法直接为彼此分配数组。在空终止字符串的情况下,您可以使用memcpy()
,(或strcpy()
)等库函数。另一种方法是通过循环将元素从源数组逐个复制到目标。
答案 3 :(得分:1)
除了其他注释之外,我担心你在函数内定义packet_t
变量packet
,当函数返回时,分配给packet
的内存将“消失”。< / p>
最好在packet
中声明main
,然后使用packet
的地址或指向packet
的指针调用例程。
然后,您可以将功能更改为
void packetCreate(packet_t *p_packet, ruint16_t type,uint16_t sn, uint16_t data1,
uint16_t data2, char crc[1024])
{
// p_packetn = &packet - it is a pointer to the packet
p_packet->type = type;
p_packet->sn = sn;
p_packet->data1 = data1;
p_packet->data2 = data2;
p_packet->crc = crcr; // note other answers to correct this line
return ;
}