|
文字列を文字列の末尾から検索する関数を作る。
//*********************************************************
// 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
関連 |
|