| 
 ワイルドカード('*', '?')の使用可能な文字列比較関数を作る。 
//*********************************************************
// 第1引数にワイルドカードを含む文字列を指定する。
// 2つの文字列が一致すれば真、さもなくば偽を返す。
//*********************************************************
int // 一致すれば 真
jmsmatch
	(
		const char *ptn, // ワイルドカード
		const char *str  // 比較する文字列
	)
{
	switch( jmscode(ptn) )
	{
		case '\0':
			return '\0' == *str;
		case '*':
			return jmsmatch( jmsnext(ptn), str )
			    || (('\0' != *str) && jmsmatch( ptn, jmsnext(str) ));
		case '?':
			return ('\0' != *str)
			    && jmsmatch( jmsnext(ptn), jmsnext(str) );
		default:
			return (jmscode(ptn) == jmscode(str))
			    && jmsmatch( jmsnext(ptn), jmsnext(str) );
	}
}//jmsmatch
関連
・シフトJIS文字列の判定 | |