Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1411922
  • 博文数量: 143
  • 博客积分: 10005
  • 博客等级: 上将
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-23 17:25
个人简介

淡泊明志 宁静致远

文章分类

全部博文(143)

文章存档

2011年(2)

2009年(1)

2007年(22)

2006年(118)

我的朋友

分类: C/C++

2006-11-25 22:25:01

C语言库函数源代码】

【本程序在Dev C++ 4.9.9.2 下编译通过】

/*

   得到s1中第一次包含s2字符串的位置指针。

*/

#include

char * my_strstr(const char *s1,const char *s2)

{

   if (*s1 == 0)

    {

      if (*s2)

        return (char *) NULL;

      return (char *) s1;

    }

   while (*s1)

   {

      size_t i;

      i = 0;

      while (1)

      {

        if (s2[i] == 0)

        {

           return (char *) s1;

        }

        if (s2[i] != s1[i])

        {

           break;

        }

        i++;

      }

      s1++;

   }

   return (char *) NULL;

}

int main()

{

   char *str1 = "ammana_babi";

   char *str2 = "babi";

   char *p;

   if( (p = my_strstr(str1,str2)) == NULL)

      printf("Can't find the string \"%s\"!\n",str2);

   else

      printf("Find the string \"%s\"!\n",p);

   str1 = "abc";

   str2 = "def";

   if( (p = my_strstr(str1,str2)) == NULL)

      printf("Can't find the string \"%s\"!\n",str2);

   else

      printf("Find the string \"%s\"!\n",p);

   system("pause");

   return 0;

}

下面是另外一个版本的 strstr函数的源代码:

char * my_strstr(const char *src,const char *substr)

{

   char *p,*tt;

   if(src == NULL || substr == NULL)

      return (char *) NULL;

   if(!*src || !*substr)

      return (char *) NULL;

   while (*src)

   {

      for(tt = (char *)src,p = (char *)substr;*p;tt++,p++)

      {

        if(*tt != *p)

           break;

      }

      if(*p == '\0')

        return (char *) src;

      src++;

   }

   return (char *) NULL;

}

阅读(12253) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-08-03 07:52:16

用的方法没有效率,太普通了