前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言库函数的模拟实现(部分)

C语言库函数的模拟实现(部分)

作者头像
用户11289931
发布2024-09-24 16:28:10
870
发布2024-09-24 16:28:10
举报
文章被收录于专栏:学习

C语言中有非常多的库函数,它们为我们的代码创作提供了许多便利。今天就由我来为大家分享几个库函数的模拟实现过程。


strlen函数

字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数

(不包 含 '\0' )。

• 参数指向的字符串必须要以 '\0' 结束。

• 注意函数的返回值为size_t,是⽆符号的( 易错 )

 • strlen的使⽤需要包含头⽂件

实现方式

它的实现方式相对来说是比较多样的。我们先来看一串代码

方式1:计数器
方式2:递归思想
代码语言:javascript
复制
方式3:指针-指针
代码语言:javascript
复制

strcpy函数

源字符串必须以 '\0' 结束。

• 会将源字符串中的 '\0' 拷⻉到⽬标空间。

• ⽬标空间必须⾜够⼤,以确保能存放源字符串。

• ⽬标空间必须可修改。

strncpy函数

• 拷⻉num个字符从源字符串到⽬标空间。

 • 如果源字符串的⻓度⼩于num,则拷⻉完源字符串之后,在⽬标的后边追加0,直到num个。


strcat函数

• 源字符串必须以 '\0' 结束。

• ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。

• ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。

• ⽬标空间必须可修改。 

strncat函数

将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加⼀个 \0 字符。

如果source指向的字符串的⻓度⼩于num的时候,只会将字符串中到\0的内容追加到destination指向的字符串末尾。


strcmp函数

◦ 第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字

◦ 第⼀个字符串等于第⼆个字符串,则返回0

 ◦ 第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字

strncmp函数

⽐较str1和str2的前num个字符,如果相等就继续往后⽐较,最多⽐较num个字⺟,如果提前发现不⼀样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。如果num个字符都相等,就是相等返回0.


strstr函数

函数返回字符串str2在字符串str1中第⼀次出现的位置。

字符串的⽐较匹配不包含\0字符,以\0作为结束标志。

模拟实现如下:


strtok函数

• sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合

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

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

• strtok函数的第⼀个参数不为 NULL ,函数将找到str中第⼀个标记,strtok函数将保存它在字符串 中的位置。

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

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

下面我们通过一个代码来直观感受这个函数:

打印结果:


strerror函数

strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。

   在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头⽂件中说明 的,C语⾔程序启动的时候就会使⽤⼀个全局的变量errno来记录程序的当前错误码,只不过程序启动 的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会将对应的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的。strerror函数就可以将错误对应的错误信息字符串的地址返回。

下面我们来打印一下:

特别的,我们可以类比perror函数,perror函数相当于⼀次将上述代码中的第9⾏完成了,直接将错误信息 打印出来。perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。

是的,这两个打印出来的结果是一致的。

讲到这,不知你是否对这些函数有了新的理解?欢迎在评论区与我交流!指出我的不足之处。

再次感谢您的观看,让我们日积跬步,慢慢驶向成功的彼岸!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • strlen函数
    • 实现方式
      • 方式1:计数器
      • 方式2:递归思想
      • 方式3:指针-指针
  • strcpy函数
  • strncpy函数
  • strcat函数
  • strncat函数
  • strcmp函数
  • strncmp函数
  • strstr函数
  • strtok函数
  • strerror函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档