C语言学习——标准库
- C 标准库 - < assert.h >
- C 标准库 - < ctype.h >
- C 标准库 - < errno.h >
- C 标准库 - < float.h >
- C 标准库 - < limits.h >
- C 标准库 - < locale.h >
- C 标准库 - < math.h >
- C 标准库 - < setjmp.h >
- C 标准库 - < signal.h >
- C 标准库 - < stdarg.h >
- C 标准库 - < stddef.h >
- C 标准库 - < stdio.h >
- C 标准库 - < stdlib.h >
- C 标准库 - < string.h >
- C 标准库 - < time.h >
C 标准库 - < assert.h >
C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:
#define assert(ignore) ((void)0)
库宏
下面列出了头文件 assert.h 中定义的唯一的函数:
序号 | 函数 & 描述 |
---|---|
1 | void assert(int expression) 这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。 |
C 标准库 - < ctype.h >
C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符。
这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符。
如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。
库函数
下面列出了头文件 ctype.h 中定义的函数:
序号 | 函数 & 描述 |
---|---|
1 | int isalnum(int c) 该函数检查所传的字符是否是字母和数字。 |
2 | int isalpha(int c) 该函数检查所传的字符是否是字母。 |
3 | int iscntrl(int c) 该函数检查所传的字符是否是控制字符。 |
4 | int isdigit(int c) 该函数检查所传的字符是否是十进制数字。 |
5 | int isgraph(int c) 该函数检查所传的字符是否有图形表示法。 |
6 | int islower(int c) 该函数检查所传的字符是否是小写字母。 |
7 | int isprint(int c) 该函数检查所传的字符是否是可打印的。 |
8 | int ispunct(int c) 该函数检查所传的字符是否是标点符号字符。 |
9 | int isspace(int c) 该函数检查所传的字符是否是空白字符。 |
10 | int isupper(int c) 该函数检查所传的字符是否是大写字母。 |
11 | int isxdigit(int c) 该函数检查所传的字符是否是十六进制数字。 |
标准库还包含了两个转换函数,它们接受并返回一个 “int”
序号 | 函数 & 描述 |
---|---|
1 | int tolower(int c) 该函数把大写字母转换为小写字母。 |
2 | int toupper(int c) 该函数把小写字母转换为大写字母。 |
C 标准库 - < errno.h >
C 标准库的 errno.h 头文件定义了整数变量 errno,它是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。该宏扩展为类型为 int 的可更改的左值,因此它可以被一个程序读取和修改。
在程序启动时,errno 设置为零,C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。
errno.h 头文件定义了一系列表示不同错误代码的宏,这些宏应扩展为类型为 int 的整数常量表达式。
库宏
下面列出了头文件 errno.h 中定义的宏:
序号 | 宏 & 描述 |
---|---|
1 | extern int errno 这是通过系统调用设置的宏,在错误事件中的某些库函数表明了什么发生了错误。 |
2 | EDOM Domain Error 这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。 |
3 | ERANGE Range Error 这个宏表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。 |
C 标准库 - < float.h >
C 标准库的 float.h 头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量是由 ANSI C 提出的,这让程序更具有可移植性。在讲解这些常量之前,最好先弄清楚浮点数是由下面四个元素组成的:
组件 | 组件描述 |
---|---|
S | 符号 ( +/- ) |
b | 指数表示的基数,2 表示二进制,10 表示十进制,16 表示十六进制,等等… |
e | 指数,一个介于最小值 emin 和最大值 emax 之间的整数。 |
p | 精度,基数 b 的有效位数 |
基于以上 4 个组成部分,一个浮点数的值如下:
floating-point = ( S ) p x b^e
或
floating-point = (+/-) precision x base^exponent
库宏
下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。请注意,所有的实例 FLT 是指类型 float,DBL 是指类型 double,LDBL 是指类型 long double。
宏 | 描述 |
---|---|
FLT_ROUNDS | 定义浮点加法的舍入模式,它可以是下列任何一个值:-1 - 无法确定0 - 趋向于零1 - 去最近的值2 - 趋向于正无穷3 - 趋向于负无穷 |
FLT_RADIX 2 | 这个宏定义了指数表示的基数。基数 2 表示二进制,基数 10 表示十进制,基数 16 表示十六进制。 |
FLT_MANT_DIGDBL_MANT_DIGLDBL_MANT_DIG | 这些宏定义了 FLT_RADIX 基数中的位数。 |
FLT_DIG 6DBL_DIG 10LDBL_DIG 10 | 这些宏定义了舍入后不会改变表示的十进制数字的最大值(基数 10)。 |
FLT_MIN_EXPDBL_MIN_EXPLDBL_MIN_EXP | 这些宏定义了基数为 FLT_RADIX 时的指数的最小负整数值。 |
FLT_MIN_10_EXP -37DBL_MIN_10_EXP -37LDBL_MIN_10_EXP -37 | 这些宏定义了基数为 10 时的指数的最小负整数值。 |
FLT_MAX_EXPDBL_MAX_EXPLDBL_MAX_EXP | 这些宏定义了基数为 FLT_RADIX 时的指数的最大整数值。 |
FLT_MAX_10_EXP +37DBL_MAX_10_EXP +37LDBL_MAX_10_EXP +37 | 这些宏定义了基数为 10 时的指数的最大整数值。 |
FLT_MAX 1E+37DBL_MAX 1E+37LDBL_MAX 1E+37 | 这些宏定义最大的有限浮点值。 |
FLT_EPSILON 1E-5DBL_EPSILON 1E-9LDBL_EPSILON 1E-9 | 这些宏定义了可表示的最小有效数字。 |
FLT_MIN 1E-37DBL_MIN 1E-37LDBL_MIN 1E-37 | 这些宏定义了最小的浮点值。 |
C 标准库 - < limits.h >
limits.h 头文件决定了各种变量类型的各种属性。定义在该头文件中的宏限制了各种变量类型(比如 char、int 和 long)的值。
这些限制指定了变量不能存储任何超出这些限制的值,例如一个无符号可以存储的最大值是 255。
库宏
下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。
宏 | 值 | 描述 |
---|---|---|
CHAR_BIT | 8 | 定义一个字节的比特数。 |
SCHAR_MIN | -128 | 定义一个有符号字符的最小值。 |
SCHAR_MAX | 127 | 定义一个有符号字符的最大值。 |
UCHAR_MAX | 255 | 定义一个无符号字符的最大值。 |
CHAR_MIN | 0 | 定义类型 char 的最小值,如果 char 表示负值,则它的值等于 SCHAR_MIN,否则等于 0。 |
CHAR_MAX | 127 | 定义类型 char 的最大值,如果 char 表示负值,则它的值等于 SCHAR_MAX,否则等于 UCHAR_MAX。 |
MB_LEN_MAX | 1 | 定义多字节字符中的最大字节数。 |
SHRT_MIN | -32768 | 定义一个短整型的最小值。 |
SHRT_MAX | +32767 | 定义一个短整型的最大值。 |
USHRT_MAX | 65535</ |