在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语言标准库中提供了一系列函数,接下来就让我们来学习一下这些函数。
1.字符分类函数
什么叫字符分类函数呢?
这就是一个判断字符大小写属于哪一类的函数。在我们的库函数中提供了一系列的函数是专门来做字符分类的,也就是一个字符是属于什么类型的字符的。
这些函数的使用方法非常相似,这里讲解一个函数,其他的非常类似。
islower 是能够判断参数部分的c是否小写字母的。
通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0.
这里就是islower和isuppper两个函数的使用方式。
在上面的代码中我们涉及到字母的大小写转换那有没有函数能够直接进行大小写函数的转换接下来我要讲的就是这个内容。
2.字符转换函数
上面的tolwer就是-32,tosupper就是+32。
这样上面的代码就可以改一下
当然如果这里不理解的话可以看下面这一段代码
这里就可以看到输入一个大写字母就可以转换成小写,那如果输入的本身是小写呢?
也还是小写,当然toupper也是和上面同样的道理。而这些函数的使用都需要包含一个头文件是ctype.h只要包含这个头文件未来在写代码的过程中就能使用这些函数了。
3.strlen的使用和模拟实现
strlen的全写是string length - 求字符串长度。怎么用呢?
这里我们首先创建了一个数组里面放了“abcdef/0”,然后使用strlen函数算出字符串长度。因为strlen的返回值是size_t所以用size_t的len来接受最后打印出来。
小结一下:字符串以\0作为结束的标志,strlen函数返回的是在字符串中\0前面出现的字符个数(不包括\0)。
参数指向的字符串必须要以\0结束,如下图所示
这两个代码就充分说明了字符串必须要以\0结尾,如果没有\0就会返回一个随机值。
注意函数的返回值为size_t,是无符号的。
strlen的使用需要包含头文件string.h。
接下来就是这个函数的模拟实现,那我们怎么去实现呢?
这里我们有一个字符串放在了数组arr里然后进入我们创建的函数里,str就指向了第一个字符串,我们通过计数器加,str就向后移动直到遇到\0结束。这就是大概的思路,实现如下:
还有另外一种写法:
4.strcpy的使用和模拟实现
strcpy - string copy - 字符串拷贝
从这里可以看到strcpy有两个参数第一个是目的地第二个是源头。
上面这段代码就是strcpy的简单使用把arr2的类容拷贝进了arr1的类容所以打印出来就是arr2的内容
对于strcpy有以下几个点需要注意一下:
1.源字符串必须以‘\0’结束
2.会将源字符串的‘\0’拷贝到目标空间
3.目标空间必须足够大,以确保能够存放源字符串
4.目标空间必须可修改。
strcpy的模拟实现
这就是strcpy的模拟实现。
5.strcat的使用和模拟实现
strcat函数就是在原字符串末尾追加一个字符串。
下面我们来实现一下
这里有使用它的一些细节:1,源字符串必须以‘\0'结束 2,目标字符串中也得有'\0',否则没办法知道追加从哪里开始 3,目标空间必须有足够大,能容纳下源字符串的内容 4,目标空间必须可修改。
那如是实现它的模拟实现呢?
有两点:1.找到目标字符串的\0 2.拷贝源头字符串的数据到目标空间的\0位置及后面空间。
这就是strcat的模拟实现。那这里我们思考这个函数能不能自己给自己追加呢?答案是不行的,会陷入死循环。
大概就是这个样子。
6.strcmp的使用和模拟实现
strcmp- string compare- 字符串比较,比较对应位置上的字符大小,小的字符所在的字符串,小于另外一个字符串。注意:比较的不是字符串的长度!
strcmp函数返回的是一个整形。
这就是它的使用,使用这个函数通常就是用来判断返回。
讲到这相信大家对于这个函数的使用有了一定的了解,那我们如何模拟实现呢?
这就是它的模拟实现
7.strncpy函数的使用
拷贝num个字符从源字符串到目标空间。
如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
8.strncat函数的使用
9.strncmp函数的使用
比较str1和str2的前num个字符,如果相等就继续往后比较,最多比较num个字母,如果提前发现不一样,就提前结束,大的字符所在的字符串大于另外一个,如果num个字符都相等就返回0.
10.strstr的使用和模拟实现
函数返回字符串str2在字符串str1中第一次出现的位置
字符串的比较匹配不包含\0字符,以\0作为结束标志。这个函数的作用是在一个字符串中找另一个字符串。
这就是strstr函数的使用,那我们怎么模拟实现呢?
这就是它的模拟实现,希望这期对大家有帮助。