首页 > 试题广场 >

查找子串: 输入两个字符串S和t,在字符串s中查找子串t,输

[问答题]

查找子串: 输入两个字符串S和t,在字符串s中查找子串t,输出起始位置,若不存在,则输出-1。要求自定义函数char*search (char*s,char*t) 返回子串t的首地址,若未找到,则返回NULL。试编写相应程序。

#include <iostream>
using namespace std;

const char* strstr(const char* src, const char* sub)
{
    if (src == nullptr || sub == nullptr)
        return src;

    const char* sp; const char* bp;
    while (*src!='\0')
    {
        bp = sub;
        sp = src;
        if (*bp != *sp)
        {
            src++;
            continue;        
        }
        while (*bp==*sp && *bp!='\0' && *sp!='\0')
        {
            sp++; bp++;
            if (*bp == '\0')
                return src;
        }
        src++;
    }

    return nullptr;
}

int main()
{
    char p[] = "12345";
    char q[] = "4";
    char* r = strstr(p, q);
    printf("r: %s\n", r);

    return 0;
}


发表于 2018-08-13 20:33:08 回复(0)