c - 查找最后一次出现的字符串

标签 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。

最佳答案

我用这种方式试过你的代码,它成功运行

#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;
}

关于c - 查找最后一次出现的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213799/

相关文章:

c - 从函数指针中减去 1

c - 我的通用快速排序有什么问题?

c - 关于打印连续图案的问题

C 结构数组输入

c++ - C和C++中整数计算的溢出

c - 这是一个 C 程序,用于查找具有相同数字的下一个最大数字。但是没有通过一个测试用例

c - 为什么 register_tm_clones 和 deregister_tm_clones 引用的地址超过 .bss 部分?这个内存分配在哪里?

c - 将多个字符串传递给函数

c - 参数限制的最佳位置是函数内部还是外部?

c++ - 在 Windows 上检测所有可用串行端口的正确方法是什么?