c语言实现strstr

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

const char *my_strstr(const char *str, const char * substr)
{
    const char *s1 = str;
    const char *s2 = substr;
    assert(str != NULL);
    assert(substr != NULL);

    if (*s2 == '\0')
    {
        return str;//如果是找一个空字符串,直接返回str
    }
    while (*str != '\0')
    {
        s1 = str;
        s2 = substr;
        while(*s1 !='\0' && *s2 != '\0' && *s1 == *s2)
//(*s1 && *s2 && *s1 == *s2)写成这样更简单    '\0'的ASCII为0,所以*s1等于0为假,后面的不参与运算
        {
            s1++;
            s2++;
        }
        if (*s2 == '\0')
        {
            return str;
        }
        str++;
    }
    return NULL;
}

int main()
{
    char *p = "abcddddef";
    char *str = "def";
    const char *ret = my_strstr(p, str);
    if (ret != NULL)
    {
        printf("%s\n", ret);
    }
    else
    {
        printf("找不到\n");
    }
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhang_ting0020/article/details/80093804