La différence entre strcpy et memcpy :
la méthode de copie est différente,
les données copiées sont différentes : strcpy ne peut copier que des chaînes, car il arrête de copier lorsqu'il juge '0'
, tandis que memcpy peut tout copier
code
#include <stdio.h>
void *MyMemCopy(void *dst,void *src,int size){
asssert(to!=NULL && from!=NULL);
//如果目标字符串在前面或者,原串的总长度小于分配给
//目标字符串的位置
//那么就不会发生重叠
if(dst < src || src+size <= dst){
char *d = dst;
const char *s = src;
while(size--){
*d++ = *s++;
}
}else{//倒着复制
char *d = dst + size -1;
const char *s = src + size -1;
while(size--){
*d-- = *s--;
}
}
d[size] = '\0';
return d;
}
//要有返回的参数,为了实现链示表达式
char *MstrCpy(char *dst,const char *src){
//如果输入不符合则提前终止
//打印出错误
//输入参数的合法性
asssert(to!=NULL && from!=NULL);
int size = strlen(dst) + 1 ;
//如果目标字符串在前面或者,原串的总长度小于分配给
//目标字符串的位置
//那么就不会发生重叠
if(dst < src || src+size <= dst){
char *d = dst;
const char *s = src;
while(size--){
*d++ = *s++;
}
}else{//倒着复制
char *d = dst + size -1;
const char *s = src + size -1;
while(size--){
*d-- = *s--;
}
}
d[size] = '\0';
return d;
}