strstr()函数

strstr()函数

找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。

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

//strstr函数的模拟实现
char* my_strstr(const char* string, const char* src)
{
    assert(string!=NULL);
    assert(src!=NULL);
	int i = 0, n = 0;
	int sz = strlen(string), len = strlen(src);//sz为主串的长度 , len为要查找的字串的长度
	for (i = 0; i < sz - len; i++)  
        // 控制比较次数,最大的比较次数为sz-len
        //    you are girl   sz=12;
        //             are   len=3
        //如果前面都没有找到,are 与 irl 比较  

	{
		int j = 0;
		for (j = j + i; j < len + i; j++)
            //控制字串与主串的比较次数
            //循环体是为了指针访问时,控制比较
		{
			if (*(string + j) == *(src + n)) //如果相等将n++;
				n++;  
			else
				break;
		}
		if (n == len)//内部循环结束,如果n与len相等,说明找到了 返回下标
		{
			return string - len;
		}
		else        //说明没有找到,将src与计数器n归0
		{
			src = src - n;
			n = 0;
			
		}
	}
		return NULL;//循环结束返回NULL
}

int main()
{
	char *string = "you are girl";
	char *src = "are";
	char *p = my_strstr(string, src);
	if (p == NULL)
	{
		printf("Not Found!\n");
	}
	else
	{
		printf("Found!\n");

	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42139044/article/details/83757239