#include <stdio.h>
/*
void* memmove(void *dest, const void* src, size_t n)
{
if(dest == NULL || src == NULL)
return NULL;
char* p =(char*) dest;
char* q =(char*) src;
while(n--)
{
*p++ = *q++;
}
return dest;
}
//*/
void* memmove(void* pDest, void* pSrc, unsigned int count)
{
char* dest , *src;
unsigned int i;
dest =(char*)pDest;
src =(char*)pSrc;
if(((char*)pDest < (char*)pSrc)|| ((char*)pSrc + count < (char*)pDest))
{ //没有重叠的情形(正向拷贝)
for(i = 0; i < count; i++)
*dest++ = *src++;
}
else
{ //有重叠的情形(逆向拷贝)
dest += count - 1;
src += count - 1;
for(i = 0; i < count; i++)
*dest-- = *src--;
}
return pDest;
}
int main()
{
//char* p = "hello,world";
//char dest[6] = {0,1,1,1,1,0};
char p[]="hello,world";
char *dest=p+2;
char *q = (char*)memmove(dest,p,5);
printf("%s\n",dest);
printf("%s\n",q);
return 0;
}
memmove
最新推荐文章于 2022-12-29 18:58:46 发布