字符串操作函数合集

int strcmp(const char *src, const char *dst)

{

   assert(src != null && dst != null)

   if(src == null || dst == null)

       throw "NULL point";


   int ret = 0;

   while(0 == (ret = *src - *dst) && *src != ‘/0’ && *dst != ‘/0’)

   {

       src++;

       dst++;

   }


   if (ret < 0)

       ret = -1;

   else if (ret > 0)

       ret = 1;


   return ret;

}


char *strcpy(char *dest,const char *source)

{

       assert((dest!=NULL)&&(source!=NULL));

       char *address = dest;

       while(*source!='/0')

       {

              *dest++=*source++;

       }

       *dest = '/0';

       return address;

}


char * strncpy(char * dest,const char *src,size_t count)
{
         char *tmp = dest;
          while (count-- && (*dest++ = *src++) != '/0')
                /* nothing */;
          return tmp;
}


char * strcat(char * dest, const char * src)
{
         char *tmp = dest;
          while (*dest)
                 dest++;
         while ((*dest++ = *src++) != '/0')
                 ;

         return tmp;
}


char * strncat(char *dest, const char *src, size_t count)
{
      char *tmp = dest;

      if (count)

 {
           while (*dest)
                dest++;

      while ((*dest++ = *src++))

                            {
                if (--count == 0)
                    break;
           }
       }


       return tmp;
}



int strncmp(const char * cs,const char * ct,size_t count)
{
         register signed char __res = 0;
 
         while (count)

         {
                 if ((__res = *cs - *ct++) != 0 || !*cs++)
                         break;
                 count--;
         }
          return __res;
 }


char * strchr(const char * s,char c)
 {
         for(; *s != c; ++s)
                if (*s == '/0')
                         return NULL;
         return (char *) s;
 }
 
 size_t strlen(const char * s)
 {
         const char *sc;
          for (sc = s; *sc != '/0'; ++sc)
                 /* nothing */;
         return sc - s;
 }

 

 void * memset(void * s,char c,size_t count)
 {
         char *xs = (char *) s;
          while (count--)
                 *xs++ = c;
          return s;
 }

 


void * memcpy(void * dest,const void *src,size_t count)
 {
         char *tmp = (char *) dest, *s = (char *) src;
          while (count--)
                 *tmp++ = *s++;
          return dest;
 }

 

 int memcmp(const void * cs,const void * ct,size_t count)
 {
         const unsigned char *su1, *su2;
         signed char res = 0;
          for( su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
                 if ((res = *su1 - *su2) != 0)
                         break;
         return res;
 }



const char * strstr(const char *src, const char *needle)

{

    const char *p1, *p2;

    p1 = src;

    p2 = needle;

    while (*src != '/0' && *needle != '/0')

    {

        if (*src++ != *needle++) {

            needle = p2;

            src = ++p1; //从下一个字符开始搜索needle     

        }

    }


    if (*needle == '/0')

        return p1;

    return NULL;

}


//int to string

char* itoa(int value, char* string)
{
     char tmp[33];
     char* tp = tmp;
     int i;
     unsigned v;
     char* sp;
     // 将值转为正值
     if (value < 0)
         v = -value;
     else
         v = (unsigned)value;

 


    // 将数转换为字符放在数组tmp中
    while (v)
    {
         i = v % 10;
         v = v / 10;
         *tp++ = i+'0';
     }

     // 将tmp里的字符填入string指针里,并加上负号(如果有)
     //整型---->字符串,要进过倒置
     sp = string;
     if (value < 0)
     *sp++ = '-';
     while (tp > tmp)
     *sp++ = *--tp;
     *sp = 0;
     return string;
}


int atoi(char *str)

{

        int ret = 0;

        int sign = 1;

        if(*str == '-')

            sign = -1;

        else

            ret = ret *10 + (*str - '0');

 

        str++;

        while(*str!= '/0')

        {

            ret = ret *10 + (*str - '0');

            str++;

        }

 

        return sign*ret;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值