我需要将一个无符号字符数组从一种方法传递给另一种,而我尝试使用此代码:
{
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;
}
我需要将一个无符号字符数组从一个方法传递给另一个方法,我尝试使用以下代码:{unsigned char * lpBuffer = new unsigned char [182]; ReceiveSystemState(lpBuffer); } BOOL ...
您的代码绝对是垃圾。一些注意事项: