// strcat的实现
char * strcat(char * dest, const char * src){
assert(dest && src);
char * ret = dest;
// 找到dest的'\0'结尾符
while(*dest){
dest++;
}
// 拷贝(while循环退出时,将结尾符'\0'也做了拷贝)
while(*dest++ = *src++){}
return ret;
}
// strcmp的实现
int strcmp(const char * str1, const char * str2){
assert(str1 && str2);
// 找到首个不相等的字符
while(*str1 && *str2 && (*str1==*str2)){
str1++;
str2++;
}
return *str1 - *str2;
}
// strcpy的实现
char * strcpy(char * dest, const char * src){
assert(dest && src);
char * ret = dest;
// 内存拷贝的字节数
int count = strlen(src) + 1;
// 内存拷贝
if(dest <= src || (dest >= src + count)){
// 拷贝方向:从低字节到高字节
while(count--){
*dest++ = *src++;
}
}else{
// 拷贝方向:从高字节向低字节
dest += (count -1);
src += (count -1);
while(count--){
*dest--=*src--;
}
}
return ret;
}