大文字と小文字を区別せずに、文字列から特定の文字を検索する関数を作る。 //********************************************************* // strchri() // 文字列 から 文字 を検索する。 // 最初 に現れた文字への ポインタ を返す。 // 文字が見つからない場合は null を返す。 // 文字列終端文字 '\0' も検索対象となる。 // 半角英字 の 大文字と小文字 を区別しない。 // // const char *string // 検索対象となる文字列 // // int c // 文字列から検索する文字 // //********************************************************* char * // 文字へのポインタ strchri ( const char *string, // 検索対象文字列 int c // 検索文字 ) { // 検索文字を見つけるまでポインタを進める c = tolower( (unsigned char)c ); const char *p = string; while( c != tolower( (unsigned char)*p ) ) { if ( '\0' == *p ) return null; ++p; } return (char *)p; }//strchri //********************************************************* // strrchri() // 文字列 から 文字 を検索する。 // 最後 に現れた文字への ポインタ を返す。 // 文字が見つからない場合は null を返す。 // 文字列終端文字 '\0' も検索対象となる。 // 半角英字 の 大文字と小文字 を区別しない。 // // const char *string // 検索対象となる文字列 // // int c // 文字列から検索する文字 // //********************************************************* char * // 文字へのポインタ strrchri ( const char *string, // 検索対象文字列 int c // 検索文字 ) { // 文字列終端に達するまで検索を繰り返す。 const char *last = null; {for( const char *p = string; null != (p = strchri( p, c )); ++p; ) { last = p; if ( '\0' == *p ) return (char *)last; }} return (char *)last; }//strrchri //********************************************************* // strnchri() // 文字列 から 文字 を検索する。 // 最初 に現れた文字への ポインタ を返す。 // 文字が見つからない場合は null を返す。 // 文字列先頭から n バイト目までを検索する。 // 検索バイト数が 0 の場合は常に null を返す。 // 文字列終端文字 '\0' も検索対象となる。 // 半角英字 の 大文字と小文字 を区別しない。 // // const char *string // 検索対象となる文字列 // // int c // 文字列から検索する文字 // // int n // 検索する最大バイト数 // //********************************************************* char * // 文字へのポインタ strnchri ( const char *string, // 検索対象文字列 int c, // 検索文字 int n // 最大検索バイト数 ) { // 検索バイト数 0 では検索は常に失敗する。 if ( n <= 0 ) return null; // 検索文字を見つけるまでポインタを進める c = tolower( (unsigned char)c ); const char *p = string; while( c != tolower( (unsigned char)*p ) ) { if ( '\0' == *p ) return null; if ( --n <= 0 ) return null; ++p; } return (char *)p; }//strnchri //********************************************************* // strnrchri() // 文字列 から 文字 を検索する。 // 最後 に現れた文字への ポインタ を返す。 // 文字が見つからない場合は null を返す。 // 文字列先頭から n バイト目までを検索する。 // 検索バイト数が 0 の場合は常に null を返す。 // 文字列終端文字 '\0' も検索対象となる。 // 半角英字 の 大文字と小文字 を区別しない。 // // const char *string // 検索対象となる文字列 // // int c // 文字列から検索する文字 // // int n // 検索する最大バイト数 // //********************************************************* char * // 文字へのポインタ strnrchri ( const char *string, // 検索対象文字列 int c, // 検索文字 int n // 最大検索バイト数 ) { // 文字列終端に達するまで検索を繰り返す。 const char *last = null; {for( const char *p = string; null != (p = strnchri( p, c, n - (p - string) )); ++p; ) { last = p; if ( '\0' == *p ) return (char *)last; }} return (char *)last; }//strnrchri 関連 |
|