char * strncat ( char * destination, const char * source, size_t num );
- 将source的前num字节拷到destination末尾,之后加上’\0’结束
- 如果num的字节数大于source的长度,那就只追加source的长度
#include<assert.h>
char* strncat(char* front, const char* back, size_t count)
{
assert(front && back);
char* start = front;
while (*front++)
;
front--;
while (count--)
if (!(*front++ = *back++))
return start;
*front = '\0';
return start;
}
const char * strstr ( const char * str1, const char * str2 );
查找子集
const char* strstr(const char* str1, const char* str2)
{
assert(str1 && str2);
char* cp = (char*)str1;//记录开始匹配的位置
char* s1;//遍历str1
char* s2;//遍历str2
if (!*str2)
return str1;
while (*cp)
{
s1 = cp;
s2=(char*)str2;
while (*s1 && *s2 && !(*s1 - *s2))
s1++, s2++;
if (!*s2)
return cp;
//如果s1 == '\0'而s2 != '\0',说明不是子集,不用循环了
//if (!*s1)
//return NULL;
cp++;
}
return NULL;
}