首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

指针有关问题,请高手及时帮忙,今晚得解决这个有关问题

2012-03-15 
指针问题,请高手及时帮忙,今晚得解决这个问题定义了结构如下:struct__CollectorCommCmd{uint32_tcodeuint

指针问题,请高手及时帮忙,今晚得解决这个问题
定义了结构如下:
struct   __CollectorCommCmd
{
        uint32_t   code;
        uint32_t   len;
        char   *pData;
}

写了如下测试函数
HRESULT     CCollector::writeperfData(__CollectorCommCmd   *   i_p_cmd,   char   *   buff)
{
    int     cmd_len   =   sizeof(i_p_cmd-> code)   +sizeof(i_p_cmd-> len)   +   i_p_cmd-> len;
    buff   =   new   char[cmd_len];
    memcpy(buff,   i_p_cmd,   (sizeof(i_p_cmd-> code)   +   sizeof(i_p_cmd-> len)));
    memcpy(buff   +8,i_p_cmd-> pData,i_p_cmd-> len);
}


些函数目的是形成指针数据,通过socket   发送,现socket   发送函数是正常的,而调用
__CollectorCommCmd     cmd
char   *   buf;
char     temp[10]   ;
cmd.code     =   CMD_OUT_PERF_TASK;
sprintf(temp, "%s ", "woshizhu ");
cmd.len   =sizeof(temp);
cmd.pData=   (char   *)malloc(strlen(temp)*sizeof(char));
memcpy(cmd.pData,temp,strlen(temp)*sizeof(char));
writeperfData(&cmd,   buf);
memcpy(buffdata,buf,sizeof(buf));
cout < < "Buffdata   = " < <buffdata < <endl;
  输入buffdata   ,但buffdata   是乱码?请问这是怎么回事?

[解决办法]
sprintf(temp, "%s ", "woshizhu ");
.........
[解决办法]
........ 猪也会c++
[解决办法]
int writeperfData(__CollectorCommCmd * i_p_cmd, char ** buff)
{
int cmd_len = sizeof(i_p_cmd-> code) +sizeof(i_p_cmd-> len) + i_p_cmd-> len;
*buff = new char[cmd_len];
memcpy(*buff, i_p_cmd, (sizeof(i_p_cmd-> code) + sizeof(i_p_cmd-> len)));
memcpy(*buff + 8,i_p_cmd-> pData,i_p_cmd-> len);

return cmd_len;
}

void main(void)
{
__CollectorCommCmd cmd;
char * buf;
char* buffdata = new char[1024];
char temp[15] ;
cmd.code = CMD_OUT_PERF_TASK;
sprintf(temp, "%s ", "nishizhu ");
cmd.len =sizeof(temp);
cmd.pData= (char *)malloc(strlen(temp)*sizeof(char));
memcpy(cmd.pData,temp,strlen(temp)*sizeof(char));
int len = writeperfData(&cmd, &buf);
memcpy(buffdata,buf, len);

cout < < "Buffdata = ";

for (int i = 0; i < len; i++)
cout < <buffdata[i];
}

热点排行