C语言 学习笔记—标准库

本文详细介绍了C语言标准库中的多个头文件,如等,涵盖断言、字符处理、错误处理、浮点数常量、类型限制等方面,旨在帮助读者理解和使用C语言的标准库。
摘要由CSDN通过智能技术生成

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</
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
英文版:The Standard C Library 内容简介 《C标准库》集中讨论了C标准库,全面介绍了ANSI/ISOC语言标准的所有库函数。书中通过引用ISOC标准的相关部分,详细讲解了每一个库函数的使用方法,并通过示例描述了其实现细节,且给出了实现和测试这些函数的完整代码。此外,每章结尾附有不同难度的习题,帮助读者巩固和提高。通过此书,读者将会更好地使用C标准库,并学会如何设计和实现库。 《C标准库》结构清晰,内容权威,阐述精辟,对于各层次C程序员和相关专业高校师生都是一本优秀的参考书。 编辑推荐 C标准库“圣经”,提供完整源代码,全面深入阐述库函数的实现与运用。C程序员必备参考书。《C标准库》是由世界级C语言专家编写的C标准库经典著作。英文版已经重印十多次,影响了几代程序员。《C标准库》结合C标准的相关部分,精辟地讲述了每一个库函数的使用方法和实现细节,这正是一个真正的C程序员所必须掌握的。更重要的是,书中给出了实现和测试这些函数的完整源代码。可以让你更深入地学习C语言。不仅如此,《C标准库》还讨论了一些即使是最有经验的C程序员通常也不熟悉的知识,比如国际化和独立于区域设置的程序的编写、与构建库相关的概念和设计思想。 作者简介 作者:(美国)P.J.Plauger 译者:卢红星 徐明亮 霍建同 P.J.Plauger,世界著名的软件技术专家,曾任ISO C标准委员会主席,C/C++User's Journal主编,现任ISO C++标准委员会主席。他是C/C++标准库开发领域的大师。所开发的Dinkumware标准库应用广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值