回复 29楼 FATALIZM
你这个帖子已经结贴了,如果有新问题可以重新开一个新帖子提问,这样更容易得到帮助。今天这会事情有点多,等忙完这阵再给你看下哈,不好意思
回复 29楼 FATALIZM
在你的基础上修改了点。#include<stdio.h>
void loc(char *str1,char *str2)
{
int i,j,p,k,a;
for(i=0;str1[i]!='\0';i++)//主串遍历
{
a = i;
for(j=0;str2[j]!='\0';j++)//模式串遍历
{
if (str1[i]==str2[j])
{
i++;
k=i;//k代表目前主串长度
p=j+1;//p表示目前模式串长度
}
else
{
j=0;//失配后模式串从头开始
break;
}
}
if(str2[j]=='\0' || str1[i]=='\0')//串结束
break;
i = a;//主串从上一次的后一位开始比较
}
a=k-p+1;
if(str2[j]=='\0')//模式串结束说明匹配成功
printf("%d\n",a);
else
printf("匹配失败!\n");
}
void main()
{
char str2[]="woshiyigedahaoren";
char str1[]="yi";
loc(str2,str1);
}