C语言学习之strings.h 与 string.h 头文件的区别
小标 2018-07-20 来源 : 阅读 1472 评论 0

摘要:本文主要向大家介绍了C语言学习之strings.h 与 string.h 头文件的区别,通过具体的内容向大家展示,希望对大家学习C语言有所帮助。

本文主要向大家介绍了C语言学习之strings.h 与 string.h 头文件的区别,通过具体的内容向大家展示,希望对大家学习C语言有所帮助。

今天使用 man string 来查看 string 文件的使用的方法(毕竟里面的函数名字和传入参数和发挥参数的类型,如果一段时间不使用,会产生遗忘。)

偶然发现,string.h 的man page 中 出现了 strings.h 的说明。这引起的我的好奇,很奇怪这个strings 和 string 之间的关系。我上网搜了几个帖子,他们写的不够清楚,今天我进行重新整理一下吧:

首先我们看一下man string 里面的内容:

 

可见,strings 头文件中包含了部分函数,没有在 string.h 中出现的。上图的环境是 macOS Sierra 版本号为:10.12.6

包括; index, rindex, strcasecmp, strncasecmp 这四个函数。

为了一探这个头文件是不是只有macos 这种 Unix-like 系统中才出现。我在Linux下的ubuntu 系统中也进行了查看。

 

我们使用命令: man string 命令,同样可见相同的内容。可见它已经是c 标准库中的头文件。

进阶:我们到底该用哪个头文件呢?

为了进一步搞清楚,我们到底在编程的使用string 还是 strings 头文件。我们在 linux 的 /usr/include 文件夹中打开strings 头文件来一窥究竟。

在 strings.h 文件中给了我们明确的答案:

 

大意为: 如果我们使用了string.h 这个头文件,那么我们不需要在进行包含这个 strings.h 这个文件。除非有一种情况。如果 没有定义 __USE_MISC这个变量,这个变量将会在 strings.h 头文件中进行定义。因为 string.h 中没有进行对这个变量进行定义。具体怎么定义的,大家可以在/usr/include/strings.h 这个文件中进行详细查看。

更进一步:

为了进一步查看社区中的这两个文件的看法,我们在 stackoverflow 中 找到了这个话题的讨论。和我们的解释大同小异:

观点1:

strings.h comes from the BSD branch in the unix evolution. Its content has been standardized by POSIX, but most of it is marked as legacy and can be easily replaced with other functions

观点2:

Typically <strings.h> just adds some useful but non-standard additional string functions to the standard header <string.h>. For maximum portability you should only use <string.h> but if you need the functions in <strings.h> more than you need portability then you can use <strings.h>instead of <string.h>.

 具体,这个 strings.h 头文件到底有没有被标准化,我们还需要考证。但是根据两个man page 的表现。我觉得有90% 的可能已经被标准化。因为 mac os 的 man page 中 已经把它归为 Standard C library. strings 与 string.h 不仅仅 只是多一个 s 的区别。

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程