strstr函数的用法举例,strstr() 函数的作用是什么?
const char strstr ( const char str1,const char * str 2);
查找子字符串
返回指向str1中第一个str2的指针,如果str2不是str1的一部分,则返回空指针。
匹配过程不包括终止空字符,但它会到此为止。
2.我自己写的(我自己试过,还没发现bug。有请告诉我)
我们可以根据上面的要求来写strstr的函数。
我们开始吧。
char* my_strstr(const char* p1,const char* p2)
断言(P1 p2);
const char * tmp=p2
if (*p2==\0 )
返回P1;
While (*tmp *p1)//都为真,所以循环下去。
If(*p1==*tmp)//当两个字符相等时,同时相加
p1,tmp
Else if (*(p1-1)==*tmp)//有可能我的声母和他的一模一样,但是因为p1,我指的是声母的最后一个。
-P1;//所以用这个来判断是否因为一个字符的大小而遗漏。如果少了一个字符,- p1就向前移动一位。
else if (*p1!=*tmp)//当两个字符不相等时,需要将tmp返回到初始(initial)位置,
p1,tmp=p2
如果(!*tmp)//False当*tmp为 \0 时,但加!为真,因此返回指针。
返回P1-strlen(p2);//减去p2的长度,因为您希望指针指向找到字符串的位置。
else if(!*p1)//当*p1为 \0 时,由于tmp判断较早,如果*p1为 \0 ,则没有找到包含的字符串,返回空指针。
返回NULL
int main()
const char * arr1= abcaabcdef
const char * arr2= abcdef
const char*p=my_strstr(arr1,arr 2);
if ( p==NULL)
Printf(未找到\ n );
其他
Printf (Found %s\n ,p);
返回0;
}
3.这是一个库函数(推荐)
//自己实现strstr
char* my_strstr(const char* p1,const char* p2)
断言(P1 p2);
if (*p2==\0 )
return(char *)P1;
const char * m=NULL//设置两个空指针m.n。
const char * n=NULL
const char * ret=p1//将p1赋给ret
While (*ret )//每次循环ret,直到ret为 \0 ,退出循环输出。
m=p1,n=p2//将p1赋给M,p2赋给N,当下半部分判断为假时,N会变回字母地址。
而(m n!(* m-*n))//如果减法为0,感叹号为真,继续执行。
m,n;
if (*n==\0 )
return(char *)P1;//因为前面的p1是const,所以需要用char*强制转换。
If (*m==\0)//当p1字符串的个数小于p2,但M和N相等时,当*m==\0 时返回空指针
返回NULL
返回NULL//因为*ret==\0 ,里面没有限定字符串,所以直接返回NULL
int main()
const char * arr1= abc
const char * arr2= abcdef
const char* p=my_strstr(arr1,arr 2);
if (p==NULL)
Printf(未找到\ n );
其他
Printf (Found %s\n ,p);
返回0;
}
,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。