C语言库函数-从入门到精通

在c语言的学习中,我们对函数应该非常的熟悉,库函数对我们的代码的编写起到了巨大的作用,今天我们来看看学习过程中重要的库函数吧。

引用的头文件有:<stdio.h>  <string.h>  <assert.h>  <errno.h>

一、strlen求字符串的长度

基本语法:

 所以我们知道了,strlen是以\0结尾,但是计算字符串的长度时,不包含\0。

模拟实现strlen求字符串的长度:

我们可以用多种方法:

1、计数器(最简单,最基本)

 const确保char*指向的内容不能改变。assert是断言,确保str里面包含的内容不为NULL。在整个代码中确保代码的规范。

2、函数递归

 3、指针 - 指针

 注意点:

strlen函数的返回值为无符号类型

 abc的长度为3,abcdef的长度为6。按道理来说,3-6=-3,就是应为strlen返回的是无符号类型,说以此时返回的是3。

二、strcpy拷贝

基础语法:

 以\0为终止元素。

模拟实现strcpy拷贝

 注意:

(1)源字符串必须以“\0”结尾

(2)会将源字符串中的“\0”拷贝到目标空间

(3)目标空间必须足够大,以确保能存放源字符串

(4)目标空间必须可以变

三、strcat字符串的追加

基本语法:

 不能自己给自己追加,应为\0被覆盖,找不到结束标志。

模拟实现strcat实现字符串的追加:

 注意:

(1)源字符串必须以“\0”结尾

(2)目标空间必须足够大,以确保能存放源字符串

(4)目标空间必须可以变

四、strcmp字符串比较

我们来看一段代码:

 这样写可以吗?答案:不行。因为字符串不能直接比较。

那么我们怎么比较呢?这就要用到strcmp函数。

 大家不要掉进了误区,以为q的长度更长,所以q比p大。这里的大小比较其实是大的字符所在的字符串更大。

模拟实现strcmp字符串比较:

 注意:

(1)第一个字符串大于第二个字符串,则返回大于0的数字

(2)第一个字符串等于第二个字符串,则返回0

(3)第一个字符串小于第二个字符串,则返回小于0的数字

strcpy,strcat,strcmp是长度不受限制的字符串函数

strncpy,strncat,strncmp是长度受限制的字符串函数,怎么用呢?和上述函数用法一致,只不过加了长度大小。具体用法如下:

五、strstr实现在一个字符串中找另外一个字符串

基本语法:

模拟实现strstr 在一个字符串中找另外一个字符串:

 首先创造两个空指针s1,s2,令cp指向str1的首元素所对应的地址,此时我们有三个指针,分别为str1,str2,cp,其中cp和str1指向同一个位置。如下图:

 cp的作用就是记录所走过的元素。

六、strtok实现切割字符串

模拟实现strtok切割字符串,我们看代码来分析该函数的用法

 分析:

char* strtok(char*str,const char * sep);

(1)首先sep的参数是个字符串,定义了用作分隔符的字符集合

(2)第一个参数指定了一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。

(3)strtok函数找到str中的下一个标记,并将其用\0结尾,返回一个指向这个标记的指针(注:strtok会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改)

(4)strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置

(5)strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记

(6)如果字符串中不存在更多的标记,则返回NULL指针

所以我们最终的代码可以写成:

 七、strerror 把错误码翻译成错误信息

 不同的数字代表不同的错误信息。

具体用法:

 当我们没这个文件的时候,编译器会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏醒醒苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值