一、函数介绍
1、Strstr
作用:查找字符串(返回字符串的地址)
注意:1.返回的是第一次出现是的地址
2.打印时会返回第一次出现之后的所有字符串
char* my_strstr(const char* p1, const char* p2)
{
assert(p1 && p2);
char* s1 = NULL;
char* s2 = NULL;//记录p1和p2的起始位置
char* cur = (char*)p1;
if(*p2 == '\0')//等同于if(!*p2)
{
return (char*)p1;
}
while(*cur)
{
s1 = cur;
s2 = (char*)p2;//s2每次都得重新从p2开始
while(*s1 && *s2 && (*s1 == *s2))
{
s1++;
s2++;
}
if(*s2 == '\0')
{
return cur;//找到字符串
}
if(!*s1)
{
return NULL;
}
cur++;
}
return NULL;//找不到字符串
}
//strstr -- 查找字符串(返回地址)
int main()
{
char* p1 = "abcdefghi";
char* p2 = "";
char* ret = my_strstr(p1, p2);
if(ret == NULL)
{
printf("字符串不存在\n");
}
else
{
printf("%s\n", ret);
}
return 0;
}
要注意的点:
1.保持原字符串不变
2.记录字符串初始地址
3.记录可能找到目标字符串的位置,方便下次进行查找
4.if语句中 !的使用
5.多个指针的使用
6.对const修饰的变量的强制类型转换