1.之前实现了strlen,strcmp,strcpy等函数,这里补充一个函数strcat和strncat。
2.想法来自于2012年数字公司的笔试题。
3.strcat的实现
(1)一般实现
char* mystrcat1(char* dst, const char* src)
{
char* ret = dst;
while (*dst != '\0')
{
dst++;
}
while (*src != '\0')
{
*dst = *src;
dst++;
src++;
}
*dst = '\0';
return ret;
}
(2)简写方法
char* mystrcat2(char* dst, const char* src)
{
char* ret = dst;
while (*dst++);
dst--;
while (*dst++ = *src++);
return ret;
}
4.strncat的实现
(1)一般实现
char* mystrncat1(char* dst, const char* src, size_t n)
{
char* ret = dst;
while (*dst != '\0')
{
dst++;
}
while (n > 0 && *src != '\0')
{
*dst = *src;
n--;
dst++;
src++;
}
*dst = '\0';
return ret;
}
(2)简写方法
char* mystrncat2(char* dst, const char* src, size_t n)
{
char* ret = dst;
while (*dst++);
dst--;
while ((n-- > 0) && (*dst++ = *src++));
return ret;
}
5.PS:简写的方法(貌似与库函数相同)虽然简便,但是没有一般的方法直观。