实现通配符*和?的小程序:
BOOL WINAPI FuzzyMatch(IN const char *src, IN const char *dst)
{
int itm = 0;
int itn = 0;
int tmp_a = 0;
int tmp_b = 0;
if (0x00 == src[0])
{
return TRUE;
}
while(src[itm] && dst[itn])
{
tmp_a = itm;
tmp_b = itn;
while(src[itm] && dst[itn])
{
if ('*' == src[itm])
{
itm++;
if (0x00 == src[itm])
{
return TRUE;
}
continue;
}
if (src[itm] == dst[itn] || '?' == src[itm])
{
itm++, itn++;
}
else if (src[itm] != dst[itn])
{
itn++;
}
}
if (0x00 ==dst[itn])
{
while('*' == src[itm])
{
itm++;
}
}
if (0x00 == src[itm] && 0x00 == dst[itn])
{
return TRUE;
}
else
{
itm = tmp_a;
itn = tmp_b + 1;
}
}
return (src[itm] == dst[itn]);
}
//字符串匹配支持*,?的匹配
BOOL WINAPI StringMatch(IN const char *src, IN const char *dst)
{
bool x = false;
int itm = 0;
int itn = 0;
while(src[itm] && dst[itn])
{
if ('*' == src[itm])
{
return FuzzyMatch(src + itm + 1, dst + itn);
}
if ('?' == src[itm] || src[itm] == dst[itn])
{
itm++, itn++;
continue;
}
return FALSE;
}
return (src[itm] == dst[itn]);
}