字符串匹配


/****************************************
字符串匹配问题:字符“*”可代表任意多个的任意字符。
输入:一个不带“*”的字符串和一个通配字符串
输出:如果匹配,则输出“Matched”;否则,输出“Not Matched”
举例:
例1: 例2: 例3: 例4: 例5:
abcdef abcdef abcdef abcdef abcdef
abc*f a** *f *d*f *d
Matched Matched Matched Matched Not Matched !
*****************************************/
#include "Match.h"
void StringMatch(char* srcString, char* matchString)
{
int nSrcLen = strlen(srcString);
int nCnt = 0;
char* matchTemp = matchString;
while(*srcString != 0)
{
if(*matchTemp == '*')//根据*代替需要匹配的字符
{
if(*(matchTemp+1) == '*')
{
++matchTemp;
}
if(*(matchTemp+1) != 0 && *srcString == *(matchTemp+1))
{
matchTemp += 2;

if(*matchTemp == 0)
{
++nCnt;
break;
}
}
++srcString;
if(*srcString == 0 && *(matchTemp+1) != 0)
{
break;
}
++nCnt;
}else
{
if(*srcString == *matchTemp)
{
++matchTemp;
if(*matchTemp == 0)
{
break;
}
++nCnt;
}
++srcString;
}
}
if(nCnt == nSrcLen)
{
cout << "Matched" << endl;
}else
{
cout << "Not Matched" << endl;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值