字符函数和字符串函数(细解)

         今天小编和大家分享C语言中字符函数和字符串函数这一部分知识

         话不多说,我们马上开始。

1.strlen

  (1)strlen我们已经很熟悉了,是一个库函数,专门来计算字符串的大小,碰到\0后停止;

(2)strlen的模拟实现(递归实现)

比如说我们要计算‘boy’这个字符串的大小

我们可以用递归的思想这样如下分析:boy = oy+1;

                                                             boy = y + 1+1;

实现又复杂一步一步简化的过程。

2.strcpy

(1)注意事项:原字符串必须以\0结束;

                           目标字符串也需要有\0

                           目标空间必须足够大

                           目标可修改

作用:简单来解释就是将原数组的内容copy到目标数组中去;

(2)

这里利用的就是对后置++的理解,后置++运算是先使用后++,因此,将解应用str2的值赋值给解应用str1之后在将指针的位置向后迁移一位,巧妙地实现了函数,形式很简单。

3.strcmp

(1)对两个字符串数组进行比较;

它的比较方式是,如果字符字符相同就比较下一组,如果不相同,就比较字符的ASCII值。

4.strcat

(1)作用简单来说就是在原数组的基础上进行追加

(2)注意事项:原字符串必须以\0结束;

                           目标字符串也需要有\0;因为要知道追加从哪里开始

                           目标空间必须足够大

                           目标可修改

模拟实现如下:

5.关于安全行更高的strncpy,strncmp,strncat;

如果我们去c++网站去观察这几个函数与原来相似函数的区别,就会发现这几个函数限制了copy或者追加或者比较的字符元素,这样在使用前我们就多一步思考,有效避免了越界访问这种情况的出现。

(2)关于模拟实现

6.strstr

(1)strstr的使用,作用:

(2)了解了strstr怎么使用之后,我们可以模拟实现一个自己的strstr函数来加深理解,小编的这种方式相对复杂但好理解,适合初学者。

<1>当我们简单的去寻找的时候,首先明白str1与str2指向的值判读相等是多次,因此使用while合适不过,但我们需要返回str1于str2相等的第一个地址,因此我们在匹配过程中需要记录开始匹配的位置,那我们需要再创建s1,s2起到遍历两组字符数组的作用

<2>但是如果是下面这种情况,我们就会发现,当第一组bbb匹配不上时,s1要重新回到指向第二个b的地址的位置,那我们就需要第三个字符变量cur记录匹配的位置。

于是借助下面成型的代码,我们可以理解一下其根本逻辑,当cur不为/0的时候,也就是说从str1位置开始,如果是s1不等于s2就会从第二个元素开始比较,省去了条件语句的比较过程,

当s1= s2就开始比较,当s2比完后出现\0;返回开始匹配时cur的地址

另外还有一类特殊情况我们需要考虑到

这个时候s1,s2均为/0作为while循环的判断条件,省去了一些复杂步骤

7.strtok

(1)str指向的是字符串,sep指的是分隔符,以  .  @为例

那这个函数有什么用呢?

简单来说它可以将一段字符串根据分隔符的位置分割成多段字符串

8.strerror

简单来说strerror可以将对应错误码的信息显示出来

它和错误码的结合,让博主想起了perror的使用,感觉如出一辙。

好的,今天关于字符函数和字符串函数分享到这里就结束,谢谢大家的观看
各位,共勉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值