1.函数的调用形式
char *strstr(char const *s1,char const *s2);
2.功能
- 在s1中查找整个s2第一次出现的起始位置,并返回一个指向该位置的指针。
- 如果s2并没有完整的出现在s1的任何地方,函数将返回一个NULL指针。
- 如果第二个参数是一个空字符串,函数就返回s1。
3.实现
#include<stdio.h>
#include<string.h>
int main()
{
char *s1 = "abcdef";
char *s2 = "cde";
char *p = strstr(s1, s2);
printf("%s", p);
return 0;
}
4.模拟实现
#include<stdio.h>
#include<assert.h>
char *my_strstr(const char *s1, const char *s2)
{
const char *str1;
const char *str2;
const char *cur = s1;
assert(s1 != NULL);
assert(s2 != NULL);
while (*cur != '\0')
{
str1 = cur;
str2 = s2;
while ((*str1 != '\0')&&(*str2 != '\0')&&(*str1==*str2))//停下条件:两字符串有其一查找完,或者两字符不相等
{
str1++;
str2++;
}
if (*str2 == '\0')
{
return (char *)cur;
}
cur++;
}
return NULL;
}
int main()
{
char *s1 = "abcdef";
char *s2 = "cde";
char *p = my_strstr(s1, s2);
if (p == NULL)
{
printf("不存在\n");
}
else
{
printf("%s", p);
}
return 0;
}