查找子串:输入两个字符串s和t,在字符串s中查找子串t,输出起始位置,若不存在,则输出-1。要求自定义函数char* search(char *s,char *t)返回子串t的首地址,若未找到,则返回NULL。
#include <stdio.h>
#include <string.h>
char *search(char *s,char *t);
int main()
{
char s[100],t[100],*p;
gets(s); //输入第一个字符串
gets(t); //换行输入第二个字符串
p=search(s, t); //调用函数
if(p!=NULL)
printf("%d\n",p-s);
else
printf("-1\n");
return 0;
}
char *search(char *s,char*t) //定义函数
{
int i,j,k=0,S,T;
char *p=NULL;
S=strlen(s);
T=strlen(t);
for(i=0;i<S;i++)
{
j=i; //如果不用j代替i的话,会导致下面是s[i]的改变
while(s[j]==t[k])
{
k++;
j++;
}
if(k>=T) //当k>=T的时候,(其实等于t的时候就该停止了)即结束循环,将是s[i]代表的子字符串的首字母的地址赋给p
{
p=&s[i];
return p;
}
k=0;//将k重新归零,进行下一次循环
}
return p;
}