ViVi Home > 技術文書 > ポインタ入門 > 文字列関数 > strstr


 

 

C/C++ ポインタ入門 > 文字列関数 > strstr
Nobuhide Tsuda
Nov-2013

文字列検索:const char *my_strstr(const char *text, const char *pat)

const char *my_strstr(const char *text, const char *pat)
{
    for(;;) {
        for(int i = 0; ; ++i) {   // pat の終端記号までループ
            if( pat[i] == '\0' )
                return text;          // 終端記号まで一致した場合はパターン発見
            if( pat[i] != text[i] )     // 文字が不一致の場合は、ループを抜ける
                break;
        }
        if( *text++ == '\0' )   // text の終端記号に達した場合は、
            return 0;                  // 0 を返す
    }
}

解説:

const char *my_strstr(const char *text, const char *pat)
{
    for(;;) {
        const char *t2 = text;
        const char *p2 = pat;
        for(;;) {
            if( *p2 == '\0' )
                return text;
            if( *p2++ != *t2++ )
                break;
        }
        if( *text++ == '\0' )
            return 0;
    }
}

解説:

const char *my_strstr(const char *text, const char *pat)
{
    for (;;) {
        if( my_is_matched(text, pat) ) {     // text 位置が pat とマッチする場合
            return text;      // そのアドレスを返す
        }
        if( *text++ == '\0' ) {
        	break;
        }
    }
    return 0;
}

解説:

 


前: | 次: