[PR]

文字列末尾からの文字列検索

戻る

文字列を文字列の末尾から検索する関数を作る。

//*********************************************************
// 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

関連

大文字と小文字を区別しない文字検索
大文字と小文字を区別しない文字列比較
大文字と小文字を区別しない文字列検索



Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
『新妻LOVELY×CATION』を応援しています!