0
点赞
收藏
分享

微信扫一扫

C语言不使用strstr独立编写函数来实现字符串的查找

C语言实现在一个字符串中查找子串。

要求:不使用内置函数strstr,自己编写一个类似功能的函数能够返回字符串中子串的起始地址。

代码如下:

#include <stdio.h>
#include <assert.h>
char* my_strstr(const char* p1, const char* p2)
{
    char* s1 = NULL;
    char* s2 = NULL;
    char* cur = (char*)p1;//记录每次匹配的起始位置
    assert(p1);
    assert(p2);
    if(!(*p2))
    {
        return (char*) p1;
    }
    while(*cur)
    {
        s1 = cur;
        s2 = (char*)p2;
        while(*s1 && *s2 && (*s1 == *s2))
        {
            s1++;
            s2++;
        }
        if(!(s2))
        {
            return cur;//找到子串返回起始位置
        }
        cur++;
    }
    return NULL;//没找到子串
}
int main()
{
    char* p1 = "abcdefabdef";
    char* p2 = "gb";
    char* start = my_strstr(p1, p2);
    if(start == NULL)
        printf("不存在\n");
    else
        printf("%s\n", start);
    return 0;
}
举报

相关推荐

0 条评论