char l_acData[4096] = { “\0” };
char *l_FiledValue;
int l_iFieldType = 0;
int l_iLen = 0;
int FiledId = 0;
for(FiledId=200;FiledId< 212;FiledId++)
{
l_FiledValue = (char*)p_rPreTreatment->pGetMsg(FiledId, l_iLen, l_iFieldType);//取出id中的值
memcpy(l_acData,l_FiledValue,l_iLen); //接入Data buf中
}
可以实现将200到212id中的值依次接入buf中吗?
memcpy后 下次再memcpy l_acData中所指的位置会后移吗?
char *l_FiledValue;
int l_iFieldType = 0;
int l_iLen = 0;
int FiledId = 0;
for(FiledId=200;FiledId< 212;FiledId++)
{
l_FiledValue = (char*)p_rPreTreatment->pGetMsg(FiledId, l_iLen, l_iFieldType);//取出id中的值
memcpy(l_acData,l_FiledValue,l_iLen); //接入Data buf中
}
可以实现将200到212id中的值依次接入buf中吗?
memcpy后 下次再memcpy l_acData中所指的位置会后移吗?
解决方案
35
memcpy(l_acData,l_FiledValue,l_iLen);
要不停的在后边拼接,就需要改变目标位置,也就是说l_acData需要增加复制的字节数
要不停的在后边拼接,就需要改变目标位置,也就是说l_acData需要增加复制的字节数
10
不会后移,memcpy参数是按值传递的,就算移动也只是移动一个复制的指针,而不是你的实参