void* my_memcpy(void* dst,const void* src,unsigned int count)
{
assert(dst);
assert(src);
void* ret=dst;
if(dst<=src || (char*)dst >= ((char*)src+count)) //源地址和目的地址不重叠,低字节向高字节拷贝
{
while(count--)
{
*(char*)dst++ = *(char*)src++;
}
}else //源地址和目的地址重叠,高地址向低地址拷贝
{
dst=(char*)dst+count-1;
src=(char*)src+count-1;
while(count--)
{
*(char*)dst-- = *(char*)src--;
}
}
return ret;
}
char* my_strcpy(char* dst,const char* src)
{
assert(dst!=NULL);
assert(src!=NULL);
char* cp=dst;
int length=strlen(src)+1;
my_memcpy(dst,src,length);
return cp;
}
int main()
{
char str[10]="abcdefg";
char des[4]="";
//cout<<my_strcpy(des,str)<<endl;
cout<<my_strcpy(str+2,str)<<endl;//自己编写的、、但是有bug...
cout<<strcpy(str+2,str)<<endl;//系统自带
return 0;
}