编写一个程序,执行汉通配符‘?’的字符串的匹配,该通配符可以与任一个字符匹配成功。
分析:从头开始扫描字符串string的每个字符,在当前字符等于字串的字符或者字串的当前比较的字符是‘?’时,字串指针向前推进,当子串指针为‘\0’时比较完毕并返回对应位置;否则重新从string串的当前位置与子串进行比较。当未找到匹配的且string结束时,返回-0
#include<iostream.h>
int pattern_index(char *subString ,char *string);
int main(){
char *string ,*subString;
int same ;
subString = "???gram";//能通过输入赋值?
string = "this program return index of substring ";
same = pattern_index(subString,string);
if(same)
cout<<"字串起始位置:"<<same<<endl;
else
cout<<"匹配失败!"<<endl;
return 0;
}
int pattern_index(char *subString ,char *string){
int i,j,k;
for(i = 0;string[i];i++){
for(j=i,k=0;(string[j]==subString[k])||(subString[k]=='?');j++,k++){
if(!subString[k+1])
return i;
}
}
return 0;
}