干货连载编译器强大的库函数你了解多少——深挖标准C函数

Posted 周立功单片机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货连载编译器强大的库函数你了解多少——深挖标准C函数相关的知识,希望对你有一定的参考价值。

对于码农来说,遇见以下的编程问题你会不会抓狂:计算两个日期之间相差多少个小时;对一个数组进行快速排序;判断一个字符串中哪些是数字哪些是大写字母…… 只要遇见这些问题我相信大家都是一副生无可恋的表情,有什么方法可以减轻这种痛苦呢?


我们在初学C语言的时候,最主要是学习它的语法,比如循环、选择、指针等内容,其次就是关心编程语言的算法,比如排序、查找算法等,由于这些知识点是平台无关的,即便是在MCU上编程,使用的也无外乎就是这些语法,所以非常重要。也正因为如此,嵌入式工程师往往会忽略C语言中另一个非常重要的内容——C标准库函数。


【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

如果非要说嵌入式工程师完全没用过标准库函数,真有点冤枉他们了,比如在设计链表的时候,使用的分配、释放内存的函数“malloc()”和“free()”函数、把一个数据进行开方运算使用的数学函数“sqrt()”,都属于标准C函数的范畴。由于这些函数底层操作起来比较麻烦,“几乎”无法用标准的C算法来实现,因此一般工程师就“理所当然”的免费使用这些函数,就如同使用“+”、“-”“*”、“/”一样畅快。


【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

“ganquan.info/standard-c/”(不要怀疑,这就是一个网络连接)

下边咱们一起掰扯一下C标准库里边还有哪些函数,可以直接在嵌入式系统里边使用(内容略多,你们可以跳着看自己关心的内容):


assert.h断言

里边包含一个相当重要的函数“assert()”,当断言数据非真,则层序会在提示异常,可以直接使用。


math.h数学函数

里边包含求三角、指数与对数相关的数学类的函数,都可以直接拿来用。


【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

ctype.h字符测试 

用于测试某个字符是否为字母、数字、可显示字符或者大小写格式。这个头文件里边的函数功能在判断字符类型的时候十分有用,但是对应的标准函数反而没有多少人用过。


举个例子:isalpha函数表示判断输入的字符是否为字母,加入其参数为'a',则isalpha('a')就会返回TRUE,如果输入的参数为'1',则函数isalpha('1')返回的数据即为NULL。


 float.h、limits.h 

定义了各种数据类型的最大值,最小值等相关内容的宏定义,没有函数,当然,也可以直接使用喽。


stdio.h标准的输入输出函数

定义了标准的输入输出函数,其中包含了大名鼎鼎的“printf”函数,不过很可惜,这个函数不能直接用。其实这个头文件里边大部分的函数都无法直接使用的,


不过还是有漏网之鱼:“sprintf()”和“sscanf()”函数:


spintf():格式化输出函数,跟printf不同的是, sprintf是写入到指定的字符串里边而不是输出到标准的显示设备上,例如想要把某个数字按照十六进制的方式转化为字符串:

【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

则运行之后查看数组str里边的数据结果即为:

【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

通过这种方式,就把数组按照对应的方式填充到字符串里边。同样,sscanf函数用法也类似,这里就不在详细介绍了。


stdlib.h常用的系统函数

里边包含了最常用的系统函数,例如RAM分配函数“malloc()”、“free()”、“calloc()”、“realloc()”,当然,这四个函数必须可以直接使用,否则有很多高级的功能都干不了。


另外还包含字符串转对应数字的函数,比如把数字类型的字符串转化为整数:“atoi()”,例如“atoi("123")”的返回值就是数字123。这种类函数多用于解析字符串指令的场合,可以与“sscanf()”配合使用。


除此之外,还有两个让千万工程师大呼痛快的函数——“qsort()”数组的快速排序函数、“bsearch()”快速搜索函数。这两个函数的效率都是相当高的,再也不用自己去设计这些折磨人的算法了。限于篇幅原因这里就不具体介绍函数的使用方法,自行问百度即可。


【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

当然还包括取绝对值、获取随机数的数学函数等函数,都是可以直接使用的。


string.h字符串操作函数

包含了关于字符串操作的最常用的函数,包括字符串衔接,字符查找,字符串比较等等,都是可以直接使用的。

 

列举了这么多函数,是不是对C语言有了重新的认识了?一大波好用的函数来袭,是否让你措手不及?有了这些函数,你就会发现原来嵌入式编程的世界是多么美好啊。

关于C程序编程还想了解其他更给力的功能与算法,推荐阅读周Boss亲自编写的、有30多年编程经验总结的秘籍——《C程序设计高级教程》,京东淘宝均有销售,我当年都看了两三遍呢,一般人我不告诉他。

【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数


我们考虑一下,printf为标准的输出函数,原则上是不能在嵌入式系统上调用的,那么有什么方法可以让它在我们制定的输出设备打印字符串呢?如何把自己MCU上的定时器外设模拟成可以查阅日期的日历系统呢?请看下集——《编译器强大的库函数你了解多少(2)——把犀利功能用在MCU上》


【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

往期好文推荐

【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数
【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

广州周立功单片机科技有限公司

【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数
【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

zlg.sales@zlgmcu.com

【干货连载】编译器强大的库函数你了解多少(1)——深挖标准C函数

400 888 2705

www.zlgmcu.com

点击

写留言

与小编沟通

以上是关于干货连载编译器强大的库函数你了解多少——深挖标准C函数的主要内容,如果未能解决你的问题,请参考以下文章

干货连载编译器强大的库函数你了解多少——高数计算不用愁

C语言中如何将自己常用的函数封装到编译器的库函数中具体应该怎么做呢?

干货合集 | 关于制品库,你了解多少?

连载(学了这么多年C语言,你真的了解static关键词吗)乐创DIY C语言讲义​——4.4节

c语言常用库函数都有哪些

什么是C语言标准函数库?平常用的哪些函数属于标准函数库?