引言
关于strcat函数的介绍
将源字符串的副本追加到目标字符串。目标中的终止空字符被源的第一个字符覆盖,并且在目标中由两者串联形成的新字符串的末尾包含一个空字符。目的地和来源不得重叠。
1.函数参数
char * strcat ( char * destination, const char * source )
2.函数返回值
返回char *destination 类型的指针
3.C语言模拟实现
char* My_strcat(char* dest, const char* str)
{
assert(dest && str);
char* begin = dest;//为了记录起始dest指针的位置,用来返回char *
while (*dest != '\0')
{
dest++;
}
while (*str)
{
*dest++ = *str++;
}
*dest = '\0';
//while (*str) {
// *dest = *str;
// dest++;
// str++;
//}
//*dest = '\0';
return begin;//返回地址
}
int main()
{
char dest[20] = "ajlsf";
char str[10] = "dflaj";
My_strcat(dest, str);
printf("%s", dest);
return 0;
}
关于strstr函数的介绍
返回指向 str1 中第一次出现的 str2 的指针,如果 str2 不是 str1 的一部分,则返回一个空指针。匹配过程不包括终止空字符,但它到此为止。
函数参数
const char * strstr ( const char * str1, const char * str2 );
C语言模拟实现
const char* My_strstr(const char* str1, const char* str2)
{
if (*str2 =='\0')
return str1;
assert(str1 && str2);
const char* dest = str1;//记录str1的起始位置
const char* sur = str2;//记录str2的起始位置
while (*dest)//遍历str1的所有字符,直到空字符
{
while (*str1 &&* str2 && *str1 == *str2) //这里需要注意 判断空字符
{
str1++;
str2++;
}
if (*str2 == '\0')
return dest;
dest++; //起始位置加一,继续遍历
str1 = dest;
str2 = sur;
}
return NULL;
}
int main()
{
char dest[20] = "ajlsf";
char str[10] = "ls";
//My_strcat(dest, str);
const char* ret=My_strstr(dest, str);
printf("%s", ret);
return 0;
}