#include
#include
int iszstr(char *str,char *zstr);//zstr是str的子串 返回出现的位置下标,否则返回-1
int main( )
{
int renum;
char str[100],zstr[100];
while(1)
{
str[0]=zstr[0]=0;
printf("输入母串:");
scanf("%s",str);
printf("输入可能的子串:");
scanf("%s",zstr);
renum=iszstr(str,zstr);
if(renum<0)
printf("不是子串!\n\n");
else
printf("是子串,起始位置在下标%d处!\n\n",renum);
}
return 0;
}
int iszstr(char *str,char *zstr)
{
char *p1=str,*p2=NULL,*pSave=NULL,flag;
while(*p1)
{
if(*p1==zstr[0] && strlen(p1)>=strlen(zstr))//先找到对应的首字符位置
{
pSave=p1;
p2=&zstr[0];
flag=1;
while(*p2)
{
if(*p1!=*p2)
{
flag=0;
break;
}
p1++;
p2++;
}
if(flag==1)
{
return pSave-&str[0];
}
else
p1=pSave;
}
p1++;
}
return -1;
}