[求助]C Primer Plus练习题问题
题目:编写一个函数string_in(),它接受两个字符串参数,如果第二个字符串被包含在第一个中,就返回被包含的字符串开始的地址.例如:string_in("hats","at")返回hats中a的地址,否则返回空指针.
程序代码:#include <stdio.h>
char *string_in(char *,char *);
int main(void)
{
char str1[81], str2[81];
char *ptr;
do{
puts("Enter the first string: ");
fgets(str1, 80, stdin);
puts("Enter the second string: ");
fgets(str2, 80, stdin);
ptr = string_in(str1, str2);
if(ptr){
puts(ptr);
printf("address:%p\n", ptr);
}
else puts("Can't find!");
puts("Enter any char except q to continue:");
fgets(str1, 80, stdin);
}while(*str1 != 'q');
puts("Quit!");
return 0;
}
char *string_in(char *str1, char *str2)
{
for (; *str1 != '\0'; str1++)
for (; *str2 != '\0'; str2++)
if (*str1 == *str2)
return str1;
if (*str1 == '\0' || *str2 == '\0')
return NULL;
}想问下错在哪里,为什么每次输入例如good od以后就输出Can't find.但是输入od good以后就可以返回指针的地址,每次不输入参数时也可以返回指针地址.






