gpt4 book ai didi

c - 使用 memcpy 复制不同类型的数组

转载 作者:行者123 更新时间:2023-12-02 05:25:31 32 4
gpt4 key购买 nike

<分区>

我已阅读 this , thisthis但他们都没有回答我想知道的问题

一组 PId(每个 3 个字节)从保存到原始数组(缓冲区)的硬件返回。该设备恰好返回 84 个字节。

然后我需要将这些 PId 复制到一个或多个数组,该数组可由该设备的 API 库读取。

这是我的代码

#pragma pack (1)
typedef unsigned char PId[3];
typedef PId PIDs[28];

int GetList(PId* plist){

unsigned char buffer[84];

//... Reads the data from hardware memory to buffer
if (RunCMD(0xCD, &buffer)){
// buffer has the correct data now 'AAAA...'

memcpy(&plist,buffer, 84);

printf("%02X%02X%02X\n", buffer[0], buffert[1], buffer[2]);
printf("%02X%02X%02X\n", buffer[3], buffer[4], buffer[5]);

return 0;
}
return 1;
}

int main(void) {
...

PId plist_a;
GetList(&plist_a);

printf("%02X%02X%02X\n", plist_a[0][0], plist_a[0][1], plist_a[0][2]);
printf("%02X%02X%02X\n", plist_a[1][0], plist_a[1][1], plist_a[1][2]);
...
}

不知何故这段代码没有将正确的数据复制到 PIDs 数组。 buffer 有正确的数据,但在 memcpy 之后,pids 没有相同的数据。

我知道我做错了什么,但我找不到。

如果有帮助,我正在使用适用于 ARM CPU 的 Windows GCC 编译我的代码

编辑:我很抱歉让每个人都感到困惑,实际上代码是有效的,但是我错过了一部分代码。我更正了。 pids 不是 PIDs 类型,而是指向它的指针。

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