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;
}