yymmdd000 2015-07-21 06:28 采纳率: 0%
浏览 2233

memcpy操作后内容打印出来一致,但是memcmp比较时却不一致

贴码:
void compare(CONF_R_3_4_DATA_MSG_t* pData,data_crc9_t* data_crc9_1)
{
...
pData->pdu.crc9_hi = 0&0x100;//reset crc9_hi for new crc9
memcpy(data_crc9,&pData->pdu,1);
memcpy(data_crc9+1,&pData->pdu.userdata,strlen(pData->pdu.userdata));
//比较data_crc9内容与data_crc9_1内容是否一致
ret = memcmp(data_crc9,data_crc9_1,strlen(pData->pdu.userdata)+1);
}

void muti_frag()
{
    ...
    ((CONF_R_3_4_DATA_MSG_t*)pData)->pdu.crc9_hi = 0&0x100;
    ((CONF_R_3_4_DATA_MSG_t*)pData)->pdu.dbsn = i&0x7f;
    memcpy(data_crc9,&((CONF_R_3_4_DATA_MSG_t*)pData)->pdu,1);
    memcpy(data_crc9+1,((CONF_R_3_4_DATA_MSG_t*)pData)->pdu.userdata,block_size);
    ...
    result[i] = compare_crc( pData,data_crc9);
    ...
}
我的疑惑:两个函数中dbsn、crc9_hi、userdata经打印出来,结果一致,用memcmp比较时,比较一个字节(即dbsn和crc9_hi)内容一致,只比较userdata内容也一致,但是比较整体的data_crc9时,内容不等,所以觉得很奇怪。
  • 写回答

6条回答 默认 最新

  • threenewbee 2015-07-21 06:31
    关注

    打印出来一样,那只是字符串一样,字符串\0之后的字符不同,不会在打印的时候看出来。

    评论

报告相同问题?