gpt4 book ai didi

c - 将可变大小的数组分配给固定大小的数组 c

转载 作者:行者123 更新时间:2023-11-30 20:50:09 24 4
gpt4 key购买 nike

我有一个字符缓冲区,定义为char *buffer。当我发送 XBEE 数据包数据时,有固定的大小要求(84 字节)。我的问题是我不知道如何在迭代时将缓冲区转换为 84 字节 block 。这是我得到的:

warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
packet = (buffer + i);
^

我的代码:

int sendSerialBuffer(char *buffer, int length)
{
int i = 0;
int result = 0;
char (* packet)[84];

// Iterate through all the bytes in the buffer
for (i = 0; i < length; i = i + 84)
{
packet = (buffer + i);
result = sendPacket(packet)
}
return 0;
}

编辑:我还尝试过声明像 char packet[84]; 和 get:

这样的数据包
error: assignment to expression with array type
packet = (buffer + i);
^

此外,sendPacket 定义为:sendPacket(char packet[84]);

最佳答案

int i = 0;
int result = 0;

// Iterate through all the bytes in the buffer
for (i = 0; i < length; i = i + 84)
{
char packet[84];
memcpy(packet, buffer[i],84);
result = sendPacket(packet);
}

return 0;

请注意,这不处理缓冲区不是 84 的精确倍数的情况

如果 sendPAcket 期望的是 char * 而不是 char [84],那么生活会更容易。然后代码将读取

int i = 0;
int result = 0;

// Iterate through all the bytes in the buffer
for (i = 0; i < length; i = i + 84)
{
char packet[84];
memcpy(packet, buffer[i],84);
result = sendPacket(buffer[i]);
}

return 0;

关于c - 将可变大小的数组分配给固定大小的数组 c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com