[PR]

ワイルドカード('*', '?')を使って文字列を比較する

戻る

 ワイルドカード('*', '?')の使用可能な文字列比較関数を作る。
 '*' は任意の文字列と一致し、'?' は空文字('\0')を除く任意の一文字と一致する。

//*********************************************************
// 第1引数にワイルドカードを含む文字列を指定する。
// 2つの文字列が一致すれば真、さもなくば偽を返す。
//*********************************************************
int // 一致すれば 真
strmatch
	(
		const char *ptn, // ワイルドカード
		const char *str  // 比較する文字列
	)
{
	switch( *ptn )
	{
		case '\0':
			return '\0' == *str;
		case '*':
			return strmatch( ptn+1, str )
			    || (('\0' != *str) && strmatch( ptn, str+1 ));
		case '?':
			return ('\0' != *str)
			    && strmatch( ptn+1, str+1 );
		default:
			return ((unsigned char)*ptn == (unsigned char)*str)
			    && strmatch( ptn+1, str+1 );
	}
}//strmatch

関連

ワイルドカードを使ってシフトJIS文字列を比較する


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

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

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp

>> 扉の外 I / II / III