C 库函数 - strstr()

 cpulspuls官方描述—<string.h>

描述:

strcmp函数,是用来在一个字符串中,查找另一个字符串的。

也就是说,它告诉我们,字符串2是否为字符串1的子集。

它的返回值有2个:

  1. 是子集,返回母集中,子集的首地址
  2. 不是子集,返回NULL

声明:

const char * strstr ( const char * str1, const char * str2 );
char * strstr ( char * str1, const char * str2 );

代码实现:

#include <stdio.h>
#include <assert.h>

char* My_strstr(const char* main, const char* part)
{
	assert(main && part);

	const char* p = main;
	const char* str_1 = main;
	const char* str_2 = part;

	while (*str_1)//目标字符串没有结束,进入循环
	{
		while (*str_1 == *str_2 && *str_1 != '\0')//2个字符串中,此字符相等,进入循环,比较下一字符
		{

			str_1++;
			str_2++;
		}
		if (*str_2 == '\0')//子字符串已经结束,比较完毕,返回参数
		{
			return p;
		}

		//目标字符串原位置未比对成功,进行下一位比对
		p++;
		//2个字符串归位
		str_1 = p;
		str_2 = part;
	}
	return NULL;
}
int main()
{
	char str_1[] = "Hello, this is my strstr";
	char str_2[] = "this is my strstr";
	char* ret = NULL;

	ret = My_strstr(str_1, str_2);

	if (ret != NULL)
	{
		printf("%s\n", ret);
	}
	else
	{
		printf("目标字符串中没有此子集\n");
	}
	return 0;
}

运行结果:

模拟实现【strstr】函数_#include