c语言判断子串
‘壹’ c语言程序,判断一个字符串是否是另一个字符串的子串,如是则输出第一次出现的位置
#include<stdio.h>
#include<string.h>
intiszstr(char*str,char*zstr);//zstr是str的子串返回出现的位置下标,否则返回-1
intmain()
{
intrenum;
charstr[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("不是子串!
");
else
printf("是子串,起始位置在下标%d处!
",renum);
}
return0;
}
intiszstr(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)
{
returnpSave-&str[0];
}
else
p1=pSave;
}
p1++;
}
return-1;
}
‘贰’ C语言中如何判断给定的两个字符串是否互为子串
int strstr(char *s1,char *s2)
{
int i,flag=0;
if(strlen(s1)>=strlen(s2))
{
for(i=0;i<strlen(s2);i++)
if(s1[i]!=s2[i])
flag=1;
if(flag==1) return 0;
else
return 1;
}
return 0;
}
strstr(s1,s2)等于1的时候说明s2是s1的字串.
‘叁’ C语言指针判断是否为子串问题
#include<stdio.h>
intfunc(char*s1,char*s2)
{
char*p=s2;
for(;*s1;s1++)
{
for(;*p;p++)
{
if(*p==*s1)
{
break;
}
}
if(*p=='