我编写了以下代码,以检查文本中是否存在一个certin字符串。问题在于,即使文本中存在模式,match()
函数也总是返回false
。
int main(){
char *text="hello my name is plapla";
char *patt="my";
cout<<match(patt,text);
system("pause");
return 0;
}
bool match(char* patt,char* text){
int textLoc=0, pattLoc=0, textStart=0;
while(textLoc <= (int) strlen(text) && pattLoc <= (int)strlen(patt)){
if( *(patt+pattLoc) == *(text+textLoc) ){
textLoc= textLoc+1;
pattLoc= pattLoc+1;
}
else{
textStart=textStart+1;
textLoc=textStart;
pattLoc=0;
}
}
if(pattLoc > (int) strlen(patt))
return true;
else return false;
}
最佳答案
在pattLoc < (int)strlen(patt)
循环中尝试while
。pattLoc == 2
时,循环将停止,因此避免将'\0'
的"my"
与' '
的"hello my name is pala"
进行比较,后者将pattloc
设置为0
和return false
。
或者,最好使用字符串substr
。