部分字符串函数的自定义实现

您所在的位置:网站首页 遍历字符串结束条件 部分字符串函数的自定义实现

部分字符串函数的自定义实现

2023-03-18 10:47| 来源: 网络整理| 查看: 265

strlen(),strcpy(),strcmp(),strcat(),strstr()等字符串函数是我们经常遇见的字符串函数,这篇文章,就让我们来尝试自定义实现这些函数。

一、

首先是strlen()函数,strlen()函数是用来计算字符串长度的函数,知道遇到'\0'时结束,计算的长度不包括'\0'。

下面是strlen()函数的声明:

部分字符串函数的自定义实现_自定义函数

下面实例演示了strlen()函数的用法:

部分字符串函数的自定义实现_自定义函数_02

我们想要自定义实现strlrn()函数,就要对其进行解析,通过strlen()函数的声明我们可以得知,我们需要将一个函数指针传给strlen()函数,然后函数会返回一个无符号整形。我们还知道,strlen()函数会从我们传入的那个指针开始,向后遍历,知道遇见了字符串的结束标志('\0')停止。

接下来我们就开始着手编写函数了。

自定义函数的定义与strlen()函数保持一致,如下:

部分字符串函数的自定义实现_字符串_03

首先定义一个变量count用来记录字符串的长度,我们需要让字符串向后遍历,可以用while循环实现,当遇到‘\0’时停止。‘\0’的ASCII码值为0,我们可以直接把*str++作为while循环的条件,每进行一次循环,count++,当遍历到‘\0’时,*str对应的ASCII值为0,条件为0,则while循环结束。最后我们返回count的值就可以得到字符串的长度。

具体代码如下:

部分字符串函数的自定义实现_字符串_04

用assert()函数来防止传入空指针。

实例演示如下: 

部分字符串函数的自定义实现_字符串_05

二、

第二个是strcpy()函数,它的功能是把一个字符串1复制给字符串2,需要注意的是,字符串2要用足够的空间容纳字符串1,否则可能会出现溢出的情况。

下面是strcpy()函数的声明:

部分字符串函数的自定义实现_while循环_06

下面实例演示了strcpy()函数的用法:

部分字符串函数的自定义实现_while循环_07

dest是储存复制内容的目标数组,src是要复制的字符串。strcpy()函数会把src包括'\0'复制给dest。具体实现就是遍历src,每次都把src的值赋给dest,直到遇到‘\0’后结束。

自定义函数代码如下:

部分字符串函数的自定义实现_while循环_08

直接把*dest++=*src++设为while循环的条件可以减少代码量,既能把*dest赋值给*src,而且当把‘\0'赋值给*dest后,*dest++=*src++表达式的结果为0,循环停止,然后返回一个指向修改后的dest的指针即可。

实例演示如下:

部分字符串函数的自定义实现_字符串_09

三、

strcmp()函数是用来比较两个字符串大小的函数,字符串比较大小并不是比较两个字符串的长度而是一个一个比较两个字符串对于的字符的ASCII码值,例如:

部分字符串函数的自定义实现_字符串_10

strcmp()函数会先将str1[0]与str2[0]比较,str1[0]==str2[0],则继续比较str1[1]与str2[1],str1[1]==str2[1],比较str1[2]与str2[2],str1[2]str2,意味着字符串str1大于字符串str2,返回一个正数。如果str1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3