文章目录
- stdio.h
- stdlib.h
- 字符串操作、浮点计算、类型判断
- 时间与货币
- 单功能库
- 常量库
之前看过一个段子,说是老师布置了一个作业,同学们查了5篇CSDN4篇知乎,发现都是机翻的一个StackOverflow。
而对于C语言标准库这种尽管重要但不会被留作业的知识,就更惨不忍睹了。对于常用的printf
,基本已经被写烂了,大家都学会了通过强调大家都会的知识来获取关注,而对大家不会的知识缄口不言。
而我要做的,就是尽量精简大家都会的知识,而将以往被忽略的知识重视起来。这些被忽略的知识如同树根一样,尽管住在树枝上的精灵们不必着眼于此,但了解了树根的结构,会明白这棵树为何会如此茁壮。
C语言标准库是一组内置的函数、常量,被定义在15个头文件中,提供了C语言中最基础的功能,如下表所示
头文件 | 基本功能 | 使用频率 | 内容量 |
---|---|---|---|
stdio.h | 输入输出 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
stdlib.h | 杂项 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
string.h | 字符串 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
math.h | 基础数学函数 | ⭐⭐⭐⭐ | ⭐⭐ |
stdarg.h | 参数列表 | ⭐⭐⭐⭐ | ⭐ |
time.h | 时间日期 | ⭐⭐⭐ | ⭐⭐ |
assert.h | 断言 | ⭐⭐⭐ | ⭐ |
ctype.h | 类型判断 | ⭐⭐ | ⭐⭐ |
errno.h | 错误信息 | ⭐⭐ | ⭐ |
signal.h | 信号 | ⭐ | ⭐ |
setjmp.h | 非局部跳转 | ⭐ | ⭐ |
stddef.h | 指针偏移 | ⭐ | ⭐ |
locale.h | 本地货币 | _ | ⭐ |
float.h | 浮点范围 | _ | ⭐ |
limits.h | 整数范围 | _ | ⭐ |
由于本人并非重度C语言用户,所以使用频率可能会有些偏颇,尤其是后面三个头文件从来没用过。
stdio.h
输入输出包,涵盖了文件读写的全部过程和标准输入输出。
操作一个文件的流程大致为:从fopen
打开文件,到fread, fwrite
读写文件,再到fflush
强制写入缓存,最后fclose
关闭文件;如果需要精确定位写入或读取的位置,可以通过fseek
或fgetpos
。
所谓标准输入输出,如果简化一下,可以理解为键盘和显示屏,键盘将标准输入传递给终端,终端将内容打印在显示屏上。关于这种基于字符串的人机交互,stdio.h
主要提供了两组函数,一组是get
和put
,另一组是print
和scan
。
- stdio.h:stdio.h
- 文件读写:一文精通C语言文件读写
- 文件结构体:C语言文件读写的基石:FILE结构体
- get和put函数族:get和put
- printf函数族:彻底练会printf函数
stdlib.h
这个包的名字很有意思,就是standard library
,相当于标准库中无法归入其他类别的统统放到这里,主要分为四个部分:内存、系统、字符串转数值和数学算法。
- 内存分配:malloc, calloc, realloc的区别
- 系统交互:return, exit, abort的区别
- system函数:用system调用系统命令行
- 字符串转数值:C语言中如何将字符串转数值
- 快速排序和二分查找:C标准库的两大神器:快速排序qsort和二分查找bsearch
字符串操作、浮点计算、类型判断
string.h:C语言字符串的查询、比较、复制等功能
ctype.h:C语言数据类型判断
math.h:C语言的基本浮点计算函数
时间与货币
作为一门国际化的大语言,C标准库自然要提供针对不同国家的本地化头函数,而因地而异最为显著的事件便是时间与货币。C标准库对不同地区的时间和货币的表达形式进行了本地化的描述,分别封装在time.h
和locale.h
中。
- time.h:C语言设置时间格式
- locale.h:C语言设置美元格式
单功能库
C语言标准库中有很多十分简单,故统一归类到单一功能库下,包括
- stdarg.h:C语言对可变参数的支持
- assert.h:断言和静态断言
- stddef.h:用stddef表示指针距离
- setjmp.h:C语言远程跳转setjmp
常量库
C语言有一些标准库中只定义了一些宏,单并未声明函数,故将这类库统一归类到常量库中。
- 系统错误码errno.h:系统错误码详解
- 信号signal.h
- float.h:浮点型限制信息
- limits.h:整数的取值范围