您的位置:首页 > 其它

文件通配符匹配检测C算法实现

2008-12-08 23:58 399 查看
转一老外的算法,不错很好用,多重扩展名也可以处理,例如 aaa.doc.bak

// --- 使用示范 -------------------

if ( FilenameMatch("*.exe", "filename.exe") == 1 )

{

// filename.exe 匹配 *.exe 结构

}

else

{

// 不匹配

}

// --- 函数实现如下 -------------------

int FilenameMatch(char *pat, char *name)

{

int match,ndone;

char *cpp,*cpn;

cpp = pat;

cpn = name;

match = 1;

ndone = 1;

while (ndone)

{

switch (*cpp)

{

case '*':

// skip to next letter

cpp++;

// skip to next letter

cpn = strchr(cpn, *cpp);

if(cpn==NULL)

{

cpn = name;

while (*cpn)

cpn++;

}

break;

case '?':

cpp++;

cpn++;

break;

case 0:

if (*cpn != 0)

match = 0;

ndone = 0;

break;

default:

if (tolower(*cpp) == tolower(*cpn))

{

cpp++;

cpn++;

}

else

{

match = 0;

ndone = 0;

}

break;

}

}

return(match);

if ( true )

{

}

else

{

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: