我想找到字符串中最后一次出现的字符串(不是以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。
答案 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;
}