C语言标准库(1)

C语言标准库(1)
一、引入
C 标准库是一组 C 内置函数、常量和头文件,比如 <stdio.h>、<stdlib.h>、<math.h>,等等。这个标准库可以作为 C 程序员的参考手册。
二、常用C标准库
1.<assert.h>
(1) 简介
C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:
(2) 常用函数
其中只有唯一一个函数
这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。
i.参数
expression – 这可以是一个变量或任何 C 表达式。如果 expression 为 TRUE,assert() 不执行任何动作。如果 expression 为 FALSE,assert() 会在标准错误 stderr 上显示错误消息,并中止程序执行。
ii.返回值
这个宏不返回任何值。
2.<ctype.h>
(1) 简介
C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符。
这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符。
如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。
(2) 函数举例
a. isalnum()
该函数检查所传的字符是否是字母和数字。
i.参数
_Ch --这是要检查的字符。
_Loc --包含字母数字元素的区域设置进行测试。
ii.返回值
如果 _Ch 是一个数字或一个字母,则该函数返回非零值,否则返回 0。
iii.实例
输出结果:
b. isalpha()
该函数检查所传的字符是否是字母。
i.参数
_Ch --这是要检查的字符。
_Loc --包含字母数字元素的区域设置进行测试。
ii.返回值
如果 _Ch 是一个字母,则该函数返回非零值,否则返回 0。
iii.实例
输出结果:
c. iscntrl()
该函数检查所传的字符是否是控制字符。
根据标准 ASCII 字符集,控制字符的 ASCII 编码介于 0x00 (NUL) 和 0x1f (US) 之间,以及 0x7f (DEL),某些平台的特定编译器实现还可以在扩展字符集(0x7f 以上)中定义额外的控制字符。
i.参数
_Ch --这是要检查的字符。
_Loc --包含字母数字元素的区域设置进行测试。
ii.返回值
如果 _Ch 是一个控制字符,则该函数返回非零值,否则返回 0。
iii.实例
输出结果:
d. isdigit()
该函数检查所传的字符是否是十进制数字字符。
i.参数
_Ch --这是要检查的字符。
ii.返回值
如果 _Ch 是一个数字,则该函数返回非零值,否则返回 0。
e. isgraph()
该函数用于检查所传的字符是否有图形表示法。
带有图形表示法的字符是除了空白字符(比如 ’ ')以外的所有可打印的字符。
i.参数
_Ch --这是要检查的字符。
_Loc --包含字母数字元素的区域设置进行测试。
ii.返回值
如果 _Ch 有图形表示法,则该函数返回非零值,否则返回 0。
f. islower()
该函数检查所传的字符是否是小写字母。
i.参数
_Ch --这是要检查的字符。
_Loc --包含字母数字元素的区域设置进行测试。
ii.返回值
如果 _Ch 是一个小写字母,则该函数返回非零值(true),否则返回 0(false)。
(3)其他函数
i. isprint()
该函数检查所传的字符是否是可打印的。可打印字符是非控制字符的字符。
ii. ispunct()
该函数检查所传的字符是否是标点符号字符。
iii. isspace()
该函数检查所传的字符是否是空白字符。
iv. isupper()
该函数检查所传的字符是否是大写字母。
v. isxdigit()
该函数检查所传的字符是否是十六进制数字。
3.<errno.h>
(1) 简介
C 标准库的 errno.h 头文件定义了整数变量 errno,它是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。该宏扩展为类型为 int 的可更改的左值,因此它可以被一个程序读取和修改。
在程序启动时,errno 设置为零,C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。
errno.h 头文件定义了一系列表示不同错误代码的宏,这些宏应扩展为类型为 int 的整数常量表达式。
(2) 库宏
a.
这是通过系统调用设置的宏,在错误事件中的某些库函数表明了什么发生了错误。
b.
这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。
c.
(3) 错误码以及类型对应
可以修改上述代码里 errno 的值从而得出不同的错误类型,从 43 之后就一直是 Unknown error 错误类型。