| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 644 人关注过本帖
标题:[求助]C Primer Plus练习题问题
只看楼主 加入收藏
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
结帖率:41.18%
收藏
已结贴  问题点数:20 回复次数:1 
[求助]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
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
你这string_in函数的代码完全是在瞎扯蛋(各种错误,却无一丝正确的地方),你让别人怎么改?

你可以参考一下标准库中的strstr函数,不谈各种高深的算法,一个最简单的伪代码是
strcmp( str+0, str2 ) == 0 吗?如果是返回 str+0;
strcmp( str+1, str2 ) == 0 吗?如果是返回 str+1;
strcmp( str+2, str2 ) == 0 吗?如果是返回 str+2;
……
2015-08-17 09:43
快速回复:[求助]C Primer Plus练习题问题
数据加载中...
 
   



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

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