4.strstr函数实现

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include

char* my_strstr(const char* str1, const char* str2)
{
	assert(str1 != NULL && str2 != NULL);
	char *s1 = NULL;
	char *s2 = NULL;
	char* cur = (char*)str1;

	if (*str2 == '\0')/*判断str2的开头是不是0*/
	{
		return (char*)str1;
	}

	while (*cur)
	{
		s1 = cur;
		s2 = (char*)str2;

		while (*s1 && *s2 && (*s1 == *s2))
		{
			s1++;
			s2++;
		}

		if (*s2 == '\0')
		{
			return cur;/*找到子串*/
		}

		if (*s1 == '\0')/*判断一下str1的长度,如果s1先为0了,就直接跳出循环*/
		{
			return NULL;
		}
		cur++;
	}

	return NULL;
}

int main()
{
	/*strstr函数功能*/
	char* ret = NULL;
	char str1[] = "abcdef";
	char str2[] = "def";
	ret = my_strstr(str1 , str2);
	if (ret == NULL)
	{
		printf("str2不是str1的子串!\n");
	}
	else
	{
		printf("%s\n", ret);
	}

	return;
}

str2是str1的子串,返回了子串(str2)在字符串(str1)中第一次出现的位置。如果找不到则返回空指针。

 

你可能感兴趣的:(库函数,C语言)