C语言字符串处理函数源码

strstr()函数源码

/*

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

*/

#include <stdlib.h>

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;

}

 

strpbrk()函数源码

/*

   得到s1中第一个且是s2中字符的位置指针。

*/

#include <stdlib.h>

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

{

   const char *c = s2;

   if (!*s1)

      return (char *) NULL;

   while (*s1)

   {

      for (c = s2; *c; c++)

      {

        if (*s1 == *c)

           break;

      }

      if (*c)

        break;

      s1++;

   }

   if (*c == ‘/0‘)

      s1 = NULL;

   return (char *) s1;

}

int main()

{

   char *str1 = "ammana_babi";

   char *str2 = "babi";

   char *p;

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

      printf("No same character!/n");

   else

      printf("%c/n",*p);

   str1 = "abc";

   str2 = "def";

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

      printf("No same character!/n");

   else

      printf("%c/n",*p);

   system("pause");

   return 0;

}

 

strcspn()函数源码

/*

   得到s1中第一个且是s2中字符的字符位置。

*/

int my_strcspn(const char *s1 ,const char *s2)

{

   const char *s = s1;

   const char *p;

   while (*s1)

   {

      for (p = s2; *p; p++)

      {

        if (*s1 == *p)

           break;

      }

      if (*p)

        break;

      s1++;

   }

   return s1 - s;

}

int main()

{

char *str1 = "ammana_babi";

   char *str2 = "babi";

   int offset;

   if((offset = my_strcspn(str1,str2)) >= strlen(str1))

      printf("Can‘t find the same character!/n");

   else

      printf("%c/n",*(str1 + offset));

   str1 = "abc";

   str2 = "def";

   if((offset = my_strcspn(str1,str2)) >= strlen(str1))

      printf("Can‘t find the same character!/n");

   else

      printf("%c/n",*(str1 + offset));

   system("pause");

   return 0;

}

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。