/*编写一个名为string_in()的函数,接受两个指向字符串的指针作为参数。如果第二个字符串包含在第一个字符串中,该函数将返回第一个字符串开始的地址。例如,string_in("hats","at")将返回hats中a的地址(就是“hats"这个数组地址)。否则,该函数返回空指针。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值*/
# include <stdio.h>
# include <string.h>
char *string_in(char *box,char *in)
{
int len1=strlen(in);
int len2=strlen(box);
int num=0;//计数器counter
for(int i=0;i<len2;i++)
{
if(box[i]==in[0])//检查到两字符串有相同字符时开始判断!
{
for(int j=0,t=i;j<len1;j++,t++)//两字符串同时开始遍历检查
{
if(in[j]==box[t])
num++;//一旦字符相同,counter递增!
}
if(num==len1)
{
return box;//若是counter等于第二个字符串字符数,说明它与那个字符串有完全相同的部分,即为包含关系
break;
}
else
{
return NULL;//不相等直接可以判断无包含关系
break;
}
}
}
}
int main(void)
{
char arr1[100],arr2[100];
char *p;
printf("Enter two strings for some times:\n");
while(scanf("%s%s",arr1,arr2)==2)
{
p=string_in(arr1,arr2);
if(p==arr1)//常规判断输出咯
printf("%s is in %s!\n",arr2,arr1);
else
printf("Sorry!%s doesn't contain %s\n",arr1,arr2);
}
return 0;
}