求助,memcpy为什么不能进行连续的数据拷贝呢?比如:将“you bad boy”写入数组a[100]后,想再将“you good boy”在后边继续写入,在memcpy将地址挪动strlen(“you bad boy”)距离但并不会复制。代码如下:
int _tmain(int argc, _TCHAR* argv[])
{
/*
HANDLE hMutex;
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, _T("SRTM_MUTEX"));
if (hMutex == NULL)
{
printf("Open Mutex failed");
}
WaitForSingleObject(hMutex, INFINITE);
Sleep(10000);
*/
void *pbufout=NULL;
char s[100]="you bad boy";
char b[1000]="";
memcpy(b,s,sizeof(s));
pbufout = b;
pbufout = (int*)pbufout + sizeof(s);
sprintf_s(s,"you good boy");
memcpy(b + sizeof(s), s, sizeof(s));
return 0;
}
sizeof(s) = 100;
memcpy(b + sizeof(s), s, sizeof(s));
请查看b[100] 里面的数据。。。。
try
char *pbufout=NULL;
char s[100]="you bad boy";
char b[1000]="";
memcpy(b,s,strlen(s));
pbufout = b;
pbufout = pbufout + strlen(s);
sprintf_s(s,"you good boy");
memcpy(b + strlen(s), s, strlen(s));
可以偏移!这是我写的一个序列化,里面用的memcpy做的!你可以借鉴一下
RSDN_ERROR_CODE Serialize(char* buffer,U32& buffer_len,U64 group_id,U16 version,const char* info,U32 info_len)
{
int len = sizeof(U64) + sizeof(U16) + sizeof(U32) + info_len;
if(buffer_len < len)
return RSDN_BUFFER_SHORT;
memset(buffer,0,buffer_len);
memcpy(buffer,&group_id,sizeof(group_id));
memcpy(buffer+sizeof(group_id),&version,sizeof(version));
memcpy(buffer+sizeof(group_id)+sizeof(version),&info_len,sizeof(info_len));
memcpy(buffer+sizeof(group_id)+sizeof(version)+sizeof(info_len),&info,info_len);
return RSDN_SUC;
}