您的位置:首页 > 其它

my_strstr()函数;my_strrstr()函数的实现

2015-03-21 11:41 357 查看
my_strstr()函数的功能是:在s1中查找整个s2第一次出现的起始位置,并返回一个指向该位置的指针,如果s2没有完整的出现在s1中,则返回NULL;

my_strrstr()函数的功能是:在s1中查找整个s2最后一次出现的起始位置,并返回一个指向该位置的指针,如果s2没有完整的出现在s1中,则返回NULL。

/****************************************
*  File Name  : my_strstr.c  my_strrstr.c
*  Creat Data : 2015.3.21
*  Author     : ZY
*****************************************/

#include <stdio.h>
char * my_strstr(char const * s1,char const *s2)
{
char *p1,*p2;
p1 = s1;
p2 = s2;
while(*s1 != '\0' && *s2 != '\0')
{
if(*s1++ != *s2++)//不相等时候,s1和s2自加,后移,而p1则保留在原位置
{
s2 = p2;//s2重新回到头
s1 = ++p1;//从下一个字符开始搜索s2
}
}
if(*s2 == '\0')
{
return p1;
}
return NULL;
}
char *my_strrstr(char const *s1,char const *s2)
{
char *last = NULL;//定义一个字符串指针赋值为空
char *cur = my_strstr(s1,s2);//第一个字符串s2
while(cur != NULL)
{
last = cur;//存放查找到的第一个字符串s2
cur = my_strstr(cur+1,s2);//向后查找直到最后一个
}
return last;//返回最后一位,如果没有找到就返回NULL
}
int main()
{
char arr[] = "12345623";
char brr[] = "23";
printf("%p\n",my_strstr(arr,brr));
printf("%p\n",my_strrstr(arr,brr));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: