思路
这个函数的实现很简单,只要将原内存中的数据逐个复制到目标内存中,使用char进行复制步长最简单,当然,你也可以按照其他长度复制内容。内存是连续的,没有结束,所以不要用 NULL判断,应该用size做判断。注意编程规范和出入参校验。返回值用void * 是为了链式编程使用。废话不多说了,看代码。
代码实现
void * mymemcpy(void * dst, void * src, int size){
if(NULL == dst || NULL == src){
printf("mystrcpy param error\n");
return NULL;
}
char * p = dst;
char * q = src;
while(size != 0){
*p++ = *q++;
size--;
}
return dst;
}
void testmymemcpy(void){
char dst[100] = {0};
char * src = "Feng is the best !";
printf("\n************ testmymemcpy ************ \n");
mymemcpy(dst, src, 6);
printf("dst = %s\n", dst);
return;
}
代码编译
gcc main.c str.c -g -o a.exe
调试输出
************ testmymemcpy ************
dst = Feng i