回 帖 发 新 帖 刷新版面

主题:[原创]通配符与目标字符串进行匹配的函数

作为练习,小弟写了个类似于通配符与目标字符串进行匹配的函数:

如: a?b 和 acb 可以匹配
     a*b 和 abcdb 可以匹配

大家帮小弟看看,还能不能优化了?
大家也来发发自己的代码。不同的思路也能让小弟学学。

[code=c]
int process(char * express, char * string){

    char *exp=express,*str=string,*starpos=NULL,*strpos=NULL;
    if( !exp || !str ) return 0;// FAIL 

    while(str){

        if(*str=='\0'){
            return (*exp=='\0') || ( (*exp=='*') && (*(exp+1)=='\0') );
        }
        if(*exp=='\0'){
            if(!starpos || (*starpos=='\0') )return 0;
            exp=starpos;
        }

        switch(*exp){
            case'?':
                exp++,str++;
                break;
            case'*':
                starpos=++exp,strpos=str;
                if(*starpos=='\0')return 1;
                break;
            default:
                if(*str==*exp){
                    exp++,str++;
                }
                else{
                    if(starpos && strpos && (*starpos=='\0') && (*strpos=='\0') )return 0;
                    exp=starpos,str=strpos++;
                }
        }

    }

    return 0;
}
[/code]

回复列表 (共4个回复)

沙发

你的匹配函数有误,以下的情况你会匹配错误:
*ABC*
nnnnAmmmmABCooooooooo

板凳

多谢提醒

3 楼

能不能说明一下,发生了什么错误好吗?Hrhsea兄。

小弟我测试过后,函数返回 1 ,(True)。
好像没有什么问题嘛。

4 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册