一、函数介绍

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修饰的变量的强制类型转换