找到最后一次出现的字符串

时间:2013-11-26 10:01:14

标签: c

我想找到字符串中最后一次出现的字符串(不是以NULL结尾)。 搜索到的子字符串总是4个字母长。这就是我试过的:

char * strrstr(char *string, char *find, ssize_t len)
{
  //I see the find in string when i print it 
  printf("%s", string);
  char *cp;
  for (cp = string + len - 4; cp >= string; cp--)
  {
    if (strncmp(cp, find, 4) == 0)
        return cp;
  }
  return NULL;
}

虽然我看到了我在字符串参数中寻找的子字符串,但它总是给我NULL。

1 个答案:

答案 0 :(得分:2)

我以这种方式尝试了你的代码并且它成功运行

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char * strrstr(char *string, char *find, ssize_t len)
{
  //I see the find in string when i print it 
  //printf("%s", string);
  char *cp;
  for (cp = string + len - 4; cp >= string; cp--)
  {
    if (strncmp(cp, find, 4) == 0)
        return cp;
  }
  return NULL;
}

int main() {
   char *ret = strrstr("kallelkallelkallelkallaa", "kall", 23);
   printf("%s", ret); //---> it prints: kallaa
   return 0;
}