#include <stdio.h>
#include <string.h>
int findStart(int start,char str[],char pat[]);
int match(int start,char str[],char pat[]);
int main(){
char str[100]="abljfvbajlfvblaksdbc;laksdbnc;afgvblaiusgdvlciuaosdgbcui;la";
char pattern[]="aks";
//printf("%d",findStart(0,str,pattern));//ok
//printf("%d",match(5,str,pattern));//ok
printf("%d",findStart(0,str,pattern));
return 1;
}
/**
返回我要找的字串开始位置
原本两个方法可以放在一起 不过这样更清晰一点
*/
int findStart(int start,char str[],char pat[]){
int find=-1;
char patStart=pat[0];
int i=0;
for(i=start;i<100;i++){
if(str[i]==patStart){//首先找到pat第一个字母在主串中开始位置
printf("start %d,",i);
find=match(i,str,pat);//再看是否和主串匹配
if(find){
printf("\n%d",i);
break;
}
}
}
return (find>0)?i:-1;//如果找到了 就返回找到的下标 否则返回-1
}
/**
返回真假 真表示匹配上
*/
int match(int start,char str[],char pat[]){
int match=1;
int pi=0;
int si=start;
while(pat[pi]!='\0'){
if( pat[pi]==str[si] ){
si++;
pi++;
}else{
match=0;
break;//一旦发现不匹配 立刻退出
}
}
printf("match");
return match;
}