strstr 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 NULL。
//模拟实现strstr函数
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char *my_strstr(const char *dest, const char *src)
{
assert(dest);
assert(src);
char *pdest = (char *)dest;
char *psrc = (char *)src;
char *tmp = (char *)dest;
while (*tmp)
{
while ((*pdest != '\0') && (*psrc != '\0') && (*pdest == *psrc))
{
pdest++;
psrc++;
}
if (*psrc == '\0')
{
return tmp;
}
if (*pdest != *psrc)
{
pdest++;
tmp++;
}
}
return NULL;
}
int main()
{
char a[] = "abcdefg";
char b[] = "bcd"
printf("%s\n",my_strstr(a,b));
system("pause");
return 0;
}
模拟实现strrstr函数
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char *my_strrstr(const char *dest, const char *src)
{
assert(dest);
assert(src);
char *ret =(char *) dest;
while (*src)
{
while (*dest != '\0')
{
dest++;
}
while (*dest != *src)
{
if (dest == ret)
return NULL;
--dest;
}
char *tmp = (char *)dest;
while (*src != '\0')
{
dest++;
src++;
}
if (*src == '\0')
return tmp;
}
}
int main()
{
char a[] = "abcdefabcdef";
char b[] = "bcd";
printf("%s\n",my_strrstr(a,b));
system("pause");
return 0;
}