文字列を文字列の末尾から検索する関数を作る。 //********************************************************* // strrstr() // 文字列 から 文字列 を検索する。 // 最後 に現れた文字列の先頭を指す ポインタ を返す。 // 文字列が見つからない場合は null を返す。 // pattern が 空文字列 の場合は常に 文字列終端 を返す。 // 文字列終端文字 '\0' は検索対象とならない。 // 半角英字 の 大文字と小文字 を区別する。 // // const char *string // 検索対象となる文字列 // // const char *pattern // 文字列から検索する文字列 // //********************************************************* char * // 文字列へのポインタ strrstr ( const char *string, // 検索対象文字列 const char *pattern // 検索する文字列 ) { // 文字列終端に達するまで検索を繰り返す。 const char *last = null; {for( const char *p = string; null != (p = strstr( p, pattern )); ++p ) { last = p; if ( '\0' == *p ) return (char *)last; }} return (char *)last; }//strrstr //********************************************************* // strnrstr() // 文字列 から 文字列 を検索する。 // 最後 に現れた文字列の先頭を指す ポインタ を返す。 // 文字列が見つからない場合は null を返す。 // 検索バイト数が 0 の場合は常に null を返す。 // pattern が 空文字列 の場合は常に 文字列終端 を返す。 // 文字列先頭から count バイト目までを検索する。 // 文字列終端文字 '\0' は検索対象とならない。 // 半角英字 の 大文字と小文字 を区別する。 // // const char *string // 検索対象となる文字列 // // const char *pattern // 文字列から検索する文字列 // // int count // 検索する最大バイト数 // //********************************************************* char * // 文字列へのポインタ strnrstr ( const char *string, // 検索対象文字列 const char *pattern, // 検索文字列 int count // 最大検索バイト数 ) { // 検索バイト数 0 では検索は常に失敗する。 if ( count <= 0 ) return null; // 文字列終端に達するまで検索を繰り返す。 const char *last = null; {for( const char *p = string; null != (p = strnstr( p, pattern, count - (p - string) )); ++p ) { last = p; if ( '\0' == *p ) return (char *)last; }} return (char *)last; }//strnrstr 関連 |
|