您的位置:首页 > 其它

模拟实现strrstr

2016-05-02 22:59 288 查看
对于前面strrchr函数的思考,

我想应该也存在strrstr这个函数的吧,可惜在msdn没找到!

假设存在这样一个函数strrstr()

原型:char *strrstr(char const *dst, char const *str);

功能:找出字符串str在dst字符串中最后一次出现的位置(不包括\0)

返回值:返回该位置的指针,如找不到,返回空指针

实现代码如下:

char *Strrstr(char const * arr, char const  str[])
{
char const *last = NULL;
char const *start = arr;
int len = strlen(str);
int j = 0;
assert(arr);
assert(str);
while (*str == 0)
{
return 0;
}

while (*arr && *str)
{
start = arr;
while ((*arr == str[j]) && (*arr) && (str[j]))
{
//last = arr-len+1;
arr++;
j++;
}
if (str[j] == '\0')
{
last = start;
}
arr = start + 1;
j = 0;
}

if (*arr == '\0')
{
return last;
}
else
return NULL;
}


测试函数:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<assert.h>

int main()
{
char arr[] = "acddefdefgh";
char str[] = "def";
printf("%s\n", Strrstr(arr, str));
system("pause");
return 0;
}


晚安

,C
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: