我需要将一个无符号字符数组从一种方法传递给另一种方法,我尝试使用以下代码:
{
unsigned char *lpBuffer = new unsigned char[182];
ReceiveSystemState(lpBuffer);
}
BOOL ReceiveSystemState(unsigned char *lpBuffer)
{
unsigned char strRecvBuffer[182] = { 0 };
//strRecvBuffer construction
memcpy(lpBuffer, strRecvBuffer, sizeof(strRecvBuffer));
return TRUE;
}
这 3 种方法(在 中使用ReceiveSystemState
)都没有按我的预期工作。在使用它们中的每一个之后,它被复制的只是第一个字符strRecvBuffer
,仅此而已。从strRecvBuffer
元素到元素都有空字符,但我需要它们,因为该字符串是来自硬件设备的消息,并且该消息将使用协议进行分析。我在这里想念什么?我初始化lpBuffer
错误吗?
编辑:我使用了一种简单的memcpy
方法来完成这项工作。结果还是一样:它被复制的只是strRecvBuffer
.
EDIT2:工作代码:
{
unsigned char *lpBuffer = new unsigned char[182];
ReceiveSystemState(lpBuffer);
for (int i = 0; i < 144; i++)
{
memcpy(&c_dateKG[i], lpBuffer + i * sizeof(unsigned char), sizeof(unsigned char) );
}
}
BOOL ReceiveSystemState(unsigned char *lpBuffer)
{
unsigned char strRecvBuffer[182] = { 0 };
//strRecvBuffer construction
memcpy(lpBuffer, strRecvBuffer, sizeof(strRecvBuffer));
return TRUE;
}