int cmp(char *p,char *q)
{
int i,j,k,size,*pos=new int[strlen(p)];
bool nomat=true;
/*先找出首字符的匹配位置集*/
j=0;
for(i=0;p[i];i++)
{
if(p[i]==q[0])
{
nomat=false;
pos[j++]=i;
}
}
if(nomat)
return -1;
else if(strlen(q)==1)
return pos[0];
else
{
/*匹配剩余项*/
size=j;
j=0;
while(j
i=pos[j++];
nomat=false;
for(i++,k=1;p[i]&&q[k];i++,k++)
if(p[i]!=q[k])
{
nomat=true;
break;
}
if(p[i]==NULL&&q[k]!=NULL)//如果p已匹配完而q没有
nomat=true;
else if(!nomat)
return pos[j-1];
}
}
delete []pos;
return -1;
}
希望对你有所帮助
//两个方法。
int find (char s[], char t[])
{
int a=0,i=0;
char *p, *r;
while (*s!='\0')
{
p=s; r=t;
while (*r!='\0')
if (*p==*r)
{
p++;
r++;
}
else break;
if (*r=='\0')
{
a=i+1;
break;
}
s++;
i++;
}
if (a)
return a;
else
return -1;
}
int find(char s[],char t[])
{
char n=t[0];
int l;
l=strlen(t);
for(int i=0;s[i]!='\0';i++)
{
if(s[i]==n&&strncmp(s+i,t,l)==0) return i;
}
return -1;
}
int find(char s[],char t[])
{
char n=t[0];
for(int i=0;s[i]!='\0';i++)
{
if(s[i]==n&&strcmp(s+i,t) return i;
}
return -1;
}