C语言程序,判断一个字符串是否是另一个字符串的子串,如是则输出第一次出现的位置
1个回答
展开全部
#include<stdio.h>
#include<string.h>
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询