题目:
编写一个函数string_in(),它接受两个字符串指针参数。如果第二个字符串被包含在第一个字符
串中,函数就返回被包含的字符串开始的地址。例如,string_in("hats", "at")返回hats中a的地址,否
则,函数返回空指针。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。
我做的string_int()
char * string_in(char * p1, char * p2)
{
int i =0;
int j;
if(*p2 =='\0')
return NULL;
while(*(p1 +i) !='\0')
{
if(*(p1 +i) ==*p2)
{
for(j =1; *(p2 +j) !=*(p1 +i +j); j++)
continue;
if(*(p2 +j) =='\0')
return (p1+ i);
else
i++;
}
else
i++;
}
return NULL;
}
看到答案的string_in()
char *string_in(char *p1, char *p2)
{
char *p1_save = p1, *p2_save = p2;
if(*p1 == '\0' || *p2 == '\0') return NULL;
while(1)
{
if(*p1 == *p2)
{
if(*++p2 == '\0') return p1_save;
if(*++p1 == '\0') return NULL;
}
else
{
if(*++p1 == '\0') return NULL;
p1_save = p1;
p2 = p2_save;
}
}
}
运行的main()
int main(void)
{
char str1[81];
char str2[81];
char * p;
puts("Input first string:");
gets(str1);
do{
puts("Input find string:");
gets(str2);
p =string_in(str1, str2);
if(p)
{
puts("Find!");
puts(p);
}
else
puts("Can't find!");
puts("Input first string (q to quit):");
gets(str1);
}while(*str1 !='q');
return 0;
}
我写的运行时查找的总是有些问题,想了半天感觉答案所涉及到的条件,和调用都有了可还是没和答案一样。
求大神帮助
编写一个函数string_in(),它接受两个字符串指针参数。如果第二个字符串被包含在第一个字符
串中,函数就返回被包含的字符串开始的地址。例如,string_in("hats", "at")返回hats中a的地址,否
则,函数返回空指针。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。
我做的string_int()
char * string_in(char * p1, char * p2)
{
int i =0;
int j;
if(*p2 =='\0')
return NULL;
while(*(p1 +i) !='\0')
{
if(*(p1 +i) ==*p2)
{
for(j =1; *(p2 +j) !=*(p1 +i +j); j++)
continue;
if(*(p2 +j) =='\0')
return (p1+ i);
else
i++;
}
else
i++;
}
return NULL;
}
看到答案的string_in()
char *string_in(char *p1, char *p2)
{
char *p1_save = p1, *p2_save = p2;
if(*p1 == '\0' || *p2 == '\0') return NULL;
while(1)
{
if(*p1 == *p2)
{
if(*++p2 == '\0') return p1_save;
if(*++p1 == '\0') return NULL;
}
else
{
if(*++p1 == '\0') return NULL;
p1_save = p1;
p2 = p2_save;
}
}
}
运行的main()
int main(void)
{
char str1[81];
char str2[81];
char * p;
puts("Input first string:");
gets(str1);
do{
puts("Input find string:");
gets(str2);
p =string_in(str1, str2);
if(p)
{
puts("Find!");
puts(p);
}
else
puts("Can't find!");
puts("Input first string (q to quit):");
gets(str1);
}while(*str1 !='q');
return 0;
}
我写的运行时查找的总是有些问题,想了半天感觉答案所涉及到的条件,和调用都有了可还是没和答案一样。
求大神帮助