C语言高手看看!不是的别来浪费机会啊

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:20:44
24、 查找子串,判断s1字符串中是否包含s2字符串。例如:“ABCDE”包含”CD”,但不包含”CB”。建议设计一个子串查找函数,发现子串则输出该子串在原串中的起始位置,否则输出-1。(详细说明各个函数的作用)

#include<stdio.h>
int FindSubString(char *a,char *b)
{
char *p=b;
char *s=a;
int i=0;
int alen=0;
int blen=0;
while(*p++)
{
blen++;
}
while(*s++)
{
alen++;
}
p=b;
s=a;
if(*p&&*s)
while(i<=alen-blen)
if(*p++==*s++)
{
if(!*p)return i;
}
else
{
i++;
p=b;
s=a+i;
}
return -1;
}
void main() {
char *x1="tuzisgreadman";
char *x2="is";
int i=FindSubString(x1,x2);
printf("%d",i);
}
不好意思,我那天没有调试.这次OK,这是个一般算法,还有个kmp算法,比较麻烦,一时想不起来!你可以去找找资料!

可以使用库函数strstr

int FindSub(char * p,char * sub)
{
char * beg=strstr(p,sub);
if(beg==NULL) return -1;
return beg-p;
}