检测字符串
7.编写一个函数string_in(),它接受两个字符串指针参数。如果第二个字符串被包含在第一个字符串中,函数就返回被包含的字符开始的地址。例如,string_in("hats","at")返回hats中a的地址,则,函数返回空指针。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。这串代码的主函数是答案的,所调用的函数是我写的,检测不到的时候能够正常显示,检测到时就出现内存错误,应该是红字问题,麻烦看一下,求详细.
#include <stdio.h>
char *string_in(char *p1, char *p2);
int main(void)
{
char str1[81];
char str2[21];
char *p;
do
{
puts("input range string:");
gets(str1);
puts("input match string:");
gets(str2);
p = string_in(str1, str2);
if ( p )
{
puts("Find!");
puts(p);
}
else puts("Can't find!");
puts("input any char except q to go on.");
gets(str1);
}
while(*str1 != 'q');
puts("Quit.");
return 0;
}
char *string_in(char *p1, char *p2)
{
char *p;
int i,count;
while(*p1!='\0' && *p2!='\0')
{
if(*p2==*p1)
{
p2++;
p1++;
count++;
}
else
p1++;
}
if(*p1=='\0'&& p2!='\0')
p=NULL;
else
{
for(i=0;i<count;i++)
p2--;
for(; *p1=*p2 ;p1--)
p=p1;
}
return p;
}