C语言——字符串函数

C语言——字符串函数


宗旨:技术的学习是有限的,分享的精神是无限的。


常用字符串操作函数的实现:注释部分你们注意一下,我没加/,加了/就看不到注释了。

*************************************************

*功能:实现字符串的拷贝

*参数:

        dest:把src拷贝到dest

        src:被拷贝的字符串

*返回值:返回其首地址

**************************************************

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

{

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

 

        char *temp = dest;

        while((*dest++ = *src++) !='\0');

 

        return temp;

}

 

*************************************************

*功能:从src中拷贝count字节大小到dest中

*参数:

        dest:把src拷贝到dest

        src:被拷贝的字符串

        count:拷贝的字节数大小

*返回值:返回其首地址

**************************************************

char*strncpy(char *dest, const char *src, size_t count)

{

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

 

        char *temp = dest;

 

       while(count)

       {

            if((*dest = *src) != '\0')

          {

                   src++;

              }

            dest++;

            count--;

       }

 

       return temp;

}

 

*************************************************

*功能:从src中拷贝size字节大小到dest中

*参数:

        dest:把src拷贝到dest

        src:被拷贝的字符串

        size:拷贝的字节数大小

*返回值:返回源字符串大小

**************************************************

char*strlcpy(char *dest, const char *src, size_t size)

{

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

 

       size_t ret = strlen(src);

 

       if(size)

       {

               size_t length = (ret >=size) ? (size - 1) : ret;

              memcpy(dest, src, length);

              dest[length] = '\0';

       }

 

       return ret;

}

 

*************************************************

*功能:将字符串src连接到dest的尾部

*参数:

        dest:

        src:连接到dest的字符串

*返回值:返回dest的首地址

**************************************************

char*strcat(char *dest, const char *src)

{

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

 

       char *temp = dest;

        while(*dest++);

 

       while((*dest++ = src++) != '\0');

 

       return temp;

}

 

 

*************************************************

*功能:将字符串src连接count字节到dest的尾部

*参数:

        dest:

        src:连接到dest的字符串

        count:连接的字节数大小

*返回值:返回dest的首地址

**************************************************

char*strcat(char *dest, const char *src, size_t count)

{

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

 

       char *temp = dest;

 

       if(count)

       {

              while(*dest++);

 

              while((*dest++ = src++) != '\0')

               {

                     if(--count == 0)

                     {

                                    *dest = '\0';

                                   break;

                      }

               }

        }

       return temp;

}

 

*************************************************

*功能:字符串比较

*参数:

        dest:

        src:

*返回值:

        如果dest> src,则返回值大于0,

        如果dest= src,则返回值等于0,

        如果dest< src,则返回值小于0。

**************************************************

intstrcmp(const char *dest, const char *src)

{

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

 

       while (*dest &&*src && (*dest == *src))

       {

               dest ++;

              src ++;

       }

 

       return (*dest - *src);

}

 

 

/*************************************************

*功能:比较两个字符串前count个字符是否一样

*参数:

        dest:

        src:

*返回值:

        如果dest> src,则返回值大于0,

        如果dest= src,则返回值等于0,

        如果dest< src,则返回值小于0。

**************************************************

intstrncmp(const char *dest, const char *src, size_t count)

{

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

 

      while(count)

      {

              if(*dest && *src &&(*dest == *src))

              {

                  dest ++;

     src ++;

                  count--;

              }

       }

 

       return (*dest - *src);

}

 

 

*************************************************

*功能:查找字符串中C第一次出现的位置

*参数:

*      src:

*      c  :待查找的字符

*返回值: 返回第一次出现的指针

**************************************************

char*strchr(const char *src, int c)

{

       assert(NULL != src);

 

       for(; *s != (char)c; s++)

       {

              if(*s == '\0')

              {

                     return NULL;

              }

       }

 

       return (char *)s;

}

 

 

*************************************************

*功能:计算字符串的大小

*参数:

*      src:

*返回值: 字符串的大小

**************************************************

size_tstrlen(const char *src)

{

       assert(NULL != src);

 

       const char *temp;

 

       for(temp = src; *temp != '\0'; src++);

 

       return (temp - src);

}

 

 

*************************************************

*功能:将字符串src的前count字节置为c

*参数:

*      src:

*      c  :置数值

*      count:置多少字节

*返回值: 字符串首地址

**************************************************

void*memset(void *src, int c, size_t count)

{

       assert(NULL != src);

 

       char *temp = src;

 

       while(count--)

       {

              *temp++ = c;

       }

 

 return src;

}

 

*************************************************

*功能:比strcpy强大,不仅限于字符串的拷贝

*参数:

*      dest:

*      src :置数值

*      count:拷贝字节数

*返回值: 字符串首地址

**************************************************

void*memcpy(void *dest, const void *src, size_t count)

{

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

 

       char *temp = dest;

       const char *s = src;

 

       while(count--)

       {

              *temp++ = *s++;

       }

 

       return dest;

}

 

intmemcmp(const void *cs, const void *ct, size_t count)

{

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

 

       const unsigned char *su1, *su2;

       int res = 0;

 

       for (su1 = cs, su2 = ct; 0 < count;++su1, ++su2, count--)

               if((res = *su1 - *su2) != 0)

               {

                     break;

               }

 

       return res;

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值