本文共 706 字,大约阅读时间需要 2 分钟。
#include#include void my_memmove(void* pDst,const void *pSrc,size_t size){ assert(pDst != NULL && pSrc != NULL); /* * pDst 和pSrc共享同一块内存区域 */ if((pSrc < pDst) && ((char*)pSrc + size > (char*)pDst)) { /* * 此时需要从尾部开始拷贝 * 把pSrc 和pDst 都指向尾部 */ char* pstrSrc = (char*)pSrc + size - 1; char* pstrDst = (char*)pDst + size - 1; /* 从尾部向头开始拷贝*/ while(size--) *pstrDst-- = *pstrSrc--; } else/* pDst 和pSrc 没有共享同一块内存区域*/ { char* pstrSrc = (char*)pSrc; char* pstrDst = (char*)pDst; /* 从头向尾部开始拷贝*/ while(size--) *pstrDst++ = *pstrSrc++; }}int main(){ char buf[1024] = {0}; char *str = "123456789abcdefg"; printf("buf = %s\n",buf); my_memmove(buf,str + 6,3); printf("buf = %s\n",buf);}
转载地址:http://rxuhj.baihongyu.com/