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;

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创业思考点滴

创业的理由应该是为了做更有意义的事&#xff0c;而不是赚更多钱&#xff0c;是为了更大程度地实现自身价值&#xff0c;而不是得到更多财富。 创业对个人是很大的挑战&#xff0c;这种挑战会让人成长得更快。 在创业过程中&#xff0c;自省很重要&#xff0c;很多时候问题与困…

各种排序方法的比较

简单排序包括直接插入排序、冒泡排序、和简单选择排序。 排序方法的稳定性&#xff1a;假设KiKj&#xff08;1<i<n,1<j<n,i!j&#xff09;&#xff0c;若在排序前的序列中Ri领先于Rj&#xff08;即i<j&#xff09;&#xff0c;经过排序后得到的序列中Ri领先于Rj…

生命很短,我用tldr

我们平时使用命令的时候&#xff0c;如果忘记的或者不知道这个命令如何使用&#xff0c;然后你就会去百度&#xff0c;也会去使用man 或者 -- help 查看&#xff0c;但是看到的一般都是长篇大论。如果你看了这篇文章&#xff0c;就会知道tldr是怎么样的存在。tldr 的含义TL;DR …

Linux安装vsftpd

卸载vsftpd sudo yum remove vsftpd 安装vsftpd sudo yum -y install vsftpd 创建一个文件夹用来当作ftp得仓库 cd / sudo mkdir ftpfile 创建一个用户,仅对文件夹有上传权限,又没有登陆权限 sudo useradd ftpuser -d /ftpfile/ -s /sbin/nologin//赋值权限sudo chown -R ftpus…

EJB 学习笔记

1、ejb 基础知识&#xff08;1&#xff09; 无状态会话bean不保存客户机的会话状态优点&#xff1a;使用小量的实例即可满足大量的客户。每个实例都没有标识&#xff0c;相互之间是等价的。等?的无状态会话bean&#xff1a; 多次和一次调用的结果和效应相同。在集群中可以…

C语言——项目规范

C语言——项目规范 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 //基本原则 1、尽量少使用全局变量&#xff0c;或者说禁止使用全局变量&#xff1b; 2、实在要在其他文件使用本文件中的变量&#xff0c;以函数接口返回其值&#xff0c;在其他文件…

折半查找判定树及平均查找长度

折半查找判定树及平均查找长度 从折半查找的过程看&#xff0c;以有序表的中间记录作为比较对象&#xff0c;并以中间记录将表分割为两个子表&#xff0c;对子表继续上述操作。所以&#xff0c;对表中每个记录的查找过程&#xff0c;可用二叉树来描述&#xff0c;二叉树中的每个…

华为开始对嵌入式开发者下手了!

5G时代到来&#xff0c;物联网技术的应用也离我们越来越近。智慧交通、智能家庭、智慧园区&#xff0c;越来越多的融入到我们的生活当中。作为物联网重要技术组成的嵌入式系统&#xff0c;嵌入式系统视角有助于深刻地、全面地理解物联网的本质。而物联网是通用计算机的互联网与…

慎用Hyper-Threading Technology

今天&#xff0c;一个同事遇到了一个非常奇怪的问题&#xff0c;他的程序&#xff08;C#&#xff09;运用了Hyper-Threading技术&#xff0c;系统用的是Windows 2000 SP4&#xff0c;当程序运行时会随机的抛出一个异常&#xff0c;而且这个bug很不容易reproduce&#xff0c;最后…

BZOJ1876 [SDOI2009]SuperGCD 【高精 + GCD优化】

题目 Sheng bill有着惊人的心算能力&#xff0c;甚至能用大脑计算出两个巨大的数的GCD&#xff08;最大公约 数&#xff09;&#xff01;因此他经常和别人比 赛计算GCD。有一天Sheng bill很嚣张地找到了你&#xff0c;并要求和你比 赛&#xff0c;但是输给Sheng bill岂不是很丢…

二叉排序树和平衡二叉排序树

二叉排序树又称为二叉查找树&#xff0c;它是一颗特殊的二叉树。&#xff08;空树&#xff09; 性质&#xff1a;1、若它的左子树非空&#xff0c;则左子树上的所有结点的值均小于根结点的值。 2、若它的右子树非空&#xff0c;则右子树上的所有结点的值均大于根结点的值。 3、…

C语言九阳神功

C语言笔记(九阳神功) 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1.static的作用&#xff1a; &#xff08;1&#xff09;在函数体内&#xff0c;一个被声明为静态的变量在这一函数被调用过程中维持其值不变&#xff08;该变量存放在静态变量区&…

FUSE文件系统

Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持&#xff0c;开发者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。由于其主要实现代码位于用户空间中&#xff0c;而不需要重新编译内核&#xff0c;这给开发者带来了众…

myeclipse试用小记----Hibernate多对一双向关联(2)

myeclipse试用小记----Hibernate多对一双向关联&#xff08;2&#xff09;在上篇文章“myeclipse试用小记----Hibernate多对一单向关联&#xff08;1&#xff09;”中&#xff0c;讲到了“Hibernate多对一单向关联”&#xff0c;现在我打算把这个做成双向的&#xff0c;也就是多…

Python的程序结构[4] - 函数/Function[2] - 匿名函数

匿名函数 / Anonymous Function 匿名函数是一种不需要绑定函数名的函数 (i.e. functions that are not bound to a name)。匿名函数通过 lambda 表达式进行构建。常用于快速建立起一个(一次性的)函数。 Note: lambda 是 Python 的一个表达式/关键字&#xff0c;类似 return&…

数组 的地址计算

数组是一个特殊的数据结构&#xff0c;数组的基本操作不涉及数组结构的变化&#xff0c;因此对于数组而言&#xff0c;采用顺序存储表示比较合适。数组的顺序存储结构有两种&#xff1a;一、以行序存储&#xff0c;如高级语言BASIC、COBOL、Pascal、c语言。二、以列序存储&…

你会选择深圳还是佛山?

最近是校招季节&#xff0c;有很多人在询问offer的问题&#xff0c;我知道我已经发了很多这样相关的文章&#xff0c;可能大家看着都有点不耐烦了&#xff0c;不过还是想说&#xff0c;人生重要的选择真的没有几个&#xff0c;我每次回答都特别慎重&#xff0c;我有时候发出来也…

盗版XP变正版

此帖为转贴&#xff01;经本人测试100&#xff05;成功&#xff0c;谨以此帖献给各位目前不能更新的猫们&#xff0c;免得四处搜寻&#xff0c;徒劳无功&#xff01;一、经过无数次验证&#xff0c;本方法绝对有效&#xff01;敬请一试&#xff01;&#xff01;1。点击开始栏→…

区间K大数查询

给定一个序列&#xff0c;每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n&#xff0c;表示序列长度。第二行包含n个正整数&#xff0c;表示给定的序列。第三个包含一个正整数m&#xff0c;表示询问个数。接下来m行&#xff0c;每行三个数l,r,K&a…

optimizer

在很多机器学习和深度学习的应用中&#xff0c;我们发现用的最多的优化器是 Adam&#xff0c;为什么呢&#xff1f; 下面是 TensorFlow 中的优化器&#xff0c; https://www.tensorflow.org/api_guides/python/train 在 keras 中也有 SGD&#xff0c;RMSprop&#xff0c;Adagr…