实现strrstr,找到子串最后的出现位置

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现strrstr,找到子串最后的出现位置相关的知识,希望对你有一定的参考价值。

  思路:使用strstr,从左向右依次查找,找到最后出现的那个。从右向左找也行(也许更快),实现起来比较麻烦,没有这个易懂。


#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
 
char* taishan_strrstr(const char *pSrc, const char* pSub)

    assert(pSrc);
    assert(pSub);
    char* pLastFound = NULL;
    char* pTemp      = (char*)pSrc;
    int   nSubLen    = strlen(pSub);

    if(   pSrc == NULL || pSrc[0] == 0
       || pSub == NULL || pSub[0] == 0)
    
        return NULL;
    

    while (pTemp)
    
        pTemp = strstr(pTemp, pSub);
        if (!pTemp)
        
            break;
        
        pLastFound  = pTemp;
        pTemp      += nSubLen;
    
    return pLastFound;

 
int main()

    const char* pSrc   = "Taishan Office, Tai'an";
    const char* pSub   = "Tai";
          char* pRight = taishan_strrstr(pSrc, pSub);
    printf("right found=%s\\n", pRight);
    return 0;

以上是关于实现strrstr,找到子串最后的出现位置的主要内容,如果未能解决你的问题,请参考以下文章

模拟实现strstr和strrstr

对于strrstr函数的实现

字符串的常用操作

怎么查找一个string 字符串中的子字符串出现的次数和位置

Golang --- package

KMP小扩展,找出子串在主串中出现的所有位置