考虑了内存重叠的字符串复制函数
char * strcpy(char *dest, char *src)
{
char *d = dest; //backup input
char *s = src;
int count = 0;
assert(dest); //非空指针检查
assert(src);
if(src == dest)
return src;
count = strlen(src) + 1;//src length
if(count<=1)
return 0; //empty src
if(dest<src || dest>(src+count))
{
while(count--)
*d++ = *s++;
}
else //dest 位于 src+count中间,
{
d = dest+count;
s = src+count;
while(count--)
*d-- = *s--; //倒过来拷贝
}
}