#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 100
#define maxm 30
char t[maxn],p[maxm];
int simple_match(char t[],char p[],int n,int m)
{
int i,j,k;
for(i=0;i<=n-m;i++)//从0一直找到n-m,因为m为要查找数组的长度
{
for(j=0,k=i;j<m&&t[k]==p[j];k++,j++);//如果找到了相同的起始,则继续比较
if(j==m) return i;//如果j和要寻找的长度相同 查找成功
}
return -1;
}
int main()
{
while(scanf("%s",t)!=EOF)//多组输入
{
scanf("%s",p);
int n= strlen(t);//计算两个数组长度
int m=strlen(p);
printf("%d\n",simple_match(t,p,n,m));
}
}
简单的匹配方法,最重要的一句就在于下面这句代码,一个for循环直接结束查找过程。
for(j=0,k=i;j<m&&t[k]==p[j];k++,j++);