指针有关问题,请高手及时帮忙,今晚得解决这个有关问题
指针问题,请高手及时帮忙,今晚得解决这个问题
定义了结构如下:
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];
}
定义了结构如下:
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];
}