strcpy和memcpy的區別:
複製方法不同
複製的數據不同:strcpy只能複製字符串,因爲判斷到’0’則停止複製
而memcpy則全部都可以複製
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;
}