strcat 源码 char * strcat(char* str1, const char* str2)
char * strcat(char* str1, const char* str2) // strcat 函数实现在str1 后追加上 str2
{ char* str_return=str1;
while ( *str1 !='\0' ) // ibc 下更巧妙一些,也应该学会 while( *str1 ) 因为 NULL 宏定义为0地址
str1 ++ ;
while ( ( *str1++ = *str2++ ) != '\0' ); // 经典的在while内部赋值和判断
return str_return;
}
strncat 源码 char * strcat(char* str1, const char* str2)
char * strncat(char* str1, const char* str2, size_t n) // strcat 函数实现在str1 后追加上 str2
{ char* str_return=str1;
while( *str1 )
str1 ++ ;
while ( ( *str1++ = *str2++ ) != '\0' && n)
{
--n;
}
;
return str_return;
}
参考::
1. Linux下的ANSI C
char * strcat(char * dest, const char * src)
{
char *tmp = dest;
while (*dest)
dest++;
while ((*dest++ = *src++) != '\0')
;
return tmp;
}
GNU C Library对这个函数的实现如下: (这个好十分好,很轻松hhh)
char * strcat (char *dest, const char *src)
{
//通过strcpy来实现strcat函数
strcpy (dest + strlen (dest), src);
return dest;
}
char * strncat(char* str1, const char* str2, size_t n) // strcat 函数实现在str1 后追加上 str2
{ char* str_return=str1;
while( *str1 )
str1 ++ ;
while ( ( *str1++ = *str2++ ) != '\0' && n)
{
--n;
}
;
return str_return;
}