标题:[求助]C Primer Plus练习题问题
取消只看楼主
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
结帖率:41.18%
已结贴  问题点数:20 回复次数:0 
[求助]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以后就可以返回指针的地址,每次不输入参数时也可以返回指针地址.
搜索更多相关主题的帖子: 练习题 字符串 
2015-08-14 21:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-456382-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.145708 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved