标签:bcd 函数 == void 重叠 oid main clu sse
#include <stdio.h> #include<string.h> #include <assert.h>
void *my_memcpy(void *dst,void const * src,int len) { void *p = dst; char *psrc = (char *)src; char *pdst = (char *)dst; assert(NULL != dst && NULL !=src );//断言的使用 if(len == 0) { return p; } if(pdst+len <= psrc || pdst >= psrc+len)//从前向后拷贝(如果没有重叠区域) { while(len--) { *pdst = *psrc; pdst++; psrc++; } } else //从后向前拷贝(如果有重叠区域) { psrc += len-1;//注意对于字符串数组是从0开始标号,要加len-1,不是len pdst += len-1; while(len--) { *pdst= *psrc; pdst--; psrc--; } } return p; } int main() { char a[] = "abcdef"; my_memcpy(a+1,a,6); printf("%s\n",a); return 0; }
标签:bcd 函数 == void 重叠 oid main clu sse
原文地址:http://www.cnblogs.com/veis/p/7895331.html