模擬實現strrstr
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
char *my_strstr(const char *dest, const char *src)//查找子字符串的函數
{
char *p = NULL;
char *q = (char*)src;
assert(dest);
assert(src);
while(*dest)
{
p = (char*)dest;
if(*dest == *src)
{
while(*src && *dest == *src)
{
dest++;
src++;
}
if(*src ==0)
return p;
else
{
dest = p;
src = q;
}
}
dest++;
}
return NULL;
}
char *my_strrstr(const char *dest, const char*src)
{
char *p = NULL;
assert(dest);
assert(src);
while(*dest)
{
if(my_strstr(dest,src))//在原字符串裏查找子字符串,如果有就將第一個字符的地址返回來
{
p = (char*)my_strstr(dest,src);
dest=p+1;//使指針指向下一個地址
//比如abcdefabcdef中找cde最後一次出現的位置,先找到第一次出現cde的位置,返回
//c的地址,然後使dest指向下一個位置,查找下一次出現cde的位置,這樣就提高了效率
}
else//如果沒查到有子字符串,就直接返回空
return p;
}
return p;
}
int main()
{
//strrstr
char arr1[] = "abababab";
char arr2[] = "aba";
char *p = my_strrstr(arr1, arr2);
if(p)
printf("%s\n",p);
else
printf("無此字符串!\n");
system("pause");
return 0;
}