|
ワイルドカード('*', '?')の使用可能な文字列比較関数を作る。
//*********************************************************
// 第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文字列の判定 | |