| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:两个字符串 大神进来!
只看楼主 加入收藏
joyful
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2012-9-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
两个字符串 大神进来!
#include  <stdio.h>
#include  <string.h>

char * fun (char  *s,  char *t )
{
  char   *p , *r, *a;
/************found************/
  a = NULL;
  while ( *s )
  {   p = s;   r = t;
      while ( *r )
/************found************/
        if ( *r == *p )
        { r++;  p++; };      
      if ( *r == '\0' ) a = s;
      s++;
  }
  return  a ;
}

main()
{
  char   s[100], t[100], *p;
  printf("\nPlease enter string S :"); scanf("%s", s );
  printf("\nPlease enter substring t :"); scanf("%s", t );
  p = fun( s, t );
  if ( p )  printf("\nThe result is :  %s\n", p);
  else      printf("\nNot found !\n" );
}

题目要求是  输入两个字符串  如s:ljdfjgl  t:fj 则输出fjgl  再如:输入s:fiufhgu  t:uf  则输出ufhgu  上面的程序只差一个语句就能完成,哪位大神第一个看出来  小弟把分全部给他!!
搜索更多相关主题的帖子: 字符串 return include fun 
2012-09-17 12:24
w995612220
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:139
专家分:313
注 册:2012-6-20
收藏
得分:12 
/************found************/
  a = NULL;
  while ( *s )
  {   p = s;   r = t;
      while ( *r==*p )     //修改的地方
/************found************/
记得20分全给我哦.谢谢了
2012-09-17 14:05
Andony
Rank: 2
等 级:论坛游民
帖 子:38
专家分:60
注 册:2012-9-12
收藏
得分:4 
/************found************/
  a = NULL;
  while ( *s )
  {   p = s;   r = t;
      while ( *r )// while( (*r == *p) && (*r != '\0') )
/************found************/



楼主请注意!!!
二楼是少判断一个条件,这样的话如果字符串出现在最后则判断不出来
像这样:
[root@localhost Desktop]# ./a.out

Please enter string S :avcdefghi

Please enter substring t :hi

Not found !

你这实现的是字符串处理函数库里的 strstr 函数啊,这种方法比 linux 内核源码里实现的方法更简单。赞一个!

还有楼主别忘了散分啊!

[ 本帖最后由 Andony 于 2012-9-17 16:36 编辑 ]

重复的事情用心做,你就是赢家
2012-09-17 14:37
Andony
Rank: 2
等 级:论坛游民
帖 子:38
专家分:60
注 册:2012-9-12
收藏
得分:4 
内核源码里是这样实现的:


 28 char *lib_strstr(const char *s1, const char *s2)
 29 {
 30         int l1, l2;
 31
 32         l2 = strlen(s2);
 33         if (!l2)
 34                 return (char *)s1;
 35         l1 = strlen(s1);
 36         while (l1 >= l2) {
 37                 l1--;
 38                 if (!memcmp(s1, s2, l2))
 39                         return (char *)s1;
 40                 s1++;
 41         }
 42         return NULL;
 43 }

重复的事情用心做,你就是赢家
2012-09-17 15:15
快速回复:两个字符串 大神进来!
数据加载中...
 
   



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

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