C 标准库 - 快速指南

C 库 - <assert.h>

C 标准库的 assert.h 头文件提供了一个名为 assert 的宏,该宏可用于验证程序所做的假设,并在假设不成立时打印诊断消息。

定义的宏 assert 引用了另一个宏 NDEBUG,而该宏不属于 <assert.h>。如果源文件中将 NDEBUG 定义为宏名,则在 <assert.h> 所在的位置包含后,assert 宏定义如下 -

#define assert(ignore) ((void)0)

库宏

以下是头文件 assert.h 中定义的唯一函数 -

Sr.No. 函数 &说明
1 void assert(int expression)

这实际上是一个宏,而不是函数,可用于在 C 程序中添加诊断信息。

2 static_assert(boolean_expression, message)

如果常量表达式的值为 false,则此宏会发出编译时诊断信息。

C Library - <ctype.h>

C 标准库的 ctype.h 头文件声明了几个用于测试和映射字符的函数。

所有函数都接受 int 作为参数,其值必须为 EOF 或可表示为无符号字符。

如果参数 c 满足所述条件,则所有函数返回非零值 (true),否则返回零 (false)。

库函数

以下是在头文件 ctype.h 中定义的函数 -

Sr.No. 函数 &说明
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)

此函数检查传递的字符是否为十六进制数字。

12 int isblank(int c)

此函数检查传递的字符是否为空白字符。

该库还包含两个接受并返回"int"类型的转换函数。

Sr.No. 函数 &说明
1 int tolower(int c)

此函数将大写字母转换为小写字母。

2 int toupper(int c)

此函数将小写字母转换为大写字母。

字符类别

序号 字符类别 &描述
1

数字

这是一组整数 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }。

2

十六进制数字

这是一组 { 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f }。

3

小写字母

这是一组小写字母 { a b c d e f g h i j k l m n o p q r s t u v w x y z }。

4

大写字母

这是一组大写字母 {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z }。

5

字母

这是一组小写字母和大写字母。

6

字母数字字符

这是一组数字、小写字母和大写字母。

7

标点符号

这是一组! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

8

图形字符

这是一组字母数字字符和标点符号。

9

空格字符

这是一组制表符、换行符、垂直制表符、换页符、回车符和空格符。

10

可打印字符

这是一组字母数字字符、标点符号和空格字符。

11

控制字符

在 ASCII 中,这些字符的八进制代码为 000 到 037,以及 177 (DEL)。

12

空白字符

这些是空格和制表符。

13

字母字符

这是一组小写字母和大写字母。

C 库 - <errno.h>

C 标准库的 errno.h 头文件定义了整数变量 errno,它在发生错误时由系统调用和某些库函数设置,以指示出了什么问题。该宏扩展为可修改的 int 类型左值,因此程序可以读取和修改它。

errno 在程序启动时设置为零。标准 C 库的某些函数会将其值修改为非零值,以指示某些类型的错误。您还可以根据需要修改其值或将其重置为零。

errno.h 头文件还定义了一个宏列表,用于指示不同的错误代码,这些宏将扩展为类型为 int 的整型常量表达式。

库宏

以下是在头文件 errno.h 中定义的宏 -

Sr.No. 宏 &说明
1 extern int errno

这是系统调用和一些库函数在发生错误时设置的宏,用于指示出了什么问题。

2 EDOM Domain Error

此宏表示域错误,如果输入参数超出了定义数学函数的域,并且 errno 设置为 EDOM,则会发生该错误。

3 ERANGE Range Error

此宏表示范围错误,如果输入参数超出数学函数定义的范围,且 errno 设置为 ERANGE,则会发生该错误。

C 库 - <float.h>

C 库 float.h 头文件包含一组与浮点值相关的各种平台相关常量。这些常量由 ANSI C 提出。浮点宏允许开发人员创建更易于移植的程序。在了解所有常量之前,最好先了解一下浮点数,它由以下四个元素组成:

Sr.No. 组件 &组件描述
1

S

符号 ( +/- )

2

b

指数表示的底数或基数,二进制为 2,十进制为 10,十六进制为 16,依此类推……

3

e

指数,介于最小值 emin 和最大值之间的整数emax.

4

p

精度是指有效数字中以 b 为底的位数。

基于以上四个组成部分,浮点数的值如下:

floating-point = ( S ) p x be

or

floating-point = (+/-) precision x baseexponent

库宏

以下值是特定于实现的,并使用 #define 指令定义,但这些值不得低于此处给出的值。请注意,在所有情况下,FLT 指的是 float 类型,DBL 指的是 double 类型,LDBL 指的是 long double 类型。

序号 宏 &说明
1

FLT_ROUNDS

定义浮点加法的舍入模式,它可以是以下任意值 -

  • -1 - 无法确定
  • 0 - 向零舍入
  • 1 - 向最接近的舍入
  • 2 - 向正无穷大舍入
  • 3 - 向负无穷大舍入
2

FLT_RADIX 2

定义指数的基数表示。以 2 为基数,以 10 为基数,以 16 为基数,以 10 为基数,都是十六进制。

3

FLT_MANT_DIG

DBL_MANT_DIG

LDBL_MANT_DIG

这些宏定义了数字的位数(以 FLT_RADIX 为基数)。

4

FLT_DIG 6

DBL_DIG 10

LDBL_DIG 10

这些宏定义了舍入后可以不变的最大十进制位数(以 10 为基数)。

5

FLT_MIN_EXP

DBL_MIN_EXP

LDBL_MIN_EXP

这些宏定义了以 FLT_RADIX 为底数的指数的最小负整数值。

6

FLT_MIN_10_EXP -37

DBL_MIN_10_EXP -37

LDBL_MIN_10_EXP -37

这些宏定义了以 FLT_RADIX 为底数的指数的最小负整数值10.

7

FLT_MAX_EXP

DBL_MAX_EXP

LDBL_MAX_EXP

这些宏定义了以 FLT_RADIX 为底数的指数的最大整数值。

8

FLT_MAX_10_EXP +37

DBL_MAX_10_EXP +37

LDBL_MAX_10_EXP +37

这些宏定义了以以 10 为基数。

9

FLT_MAX 1E+37

DBL_MAX 1E+37

LDBL_MAX 1E+37

这些宏定义最大有限浮点值。

10

FLT_EPSILON 1E-5

DBL_EPSILON 1E-9

LDBL_EPSILON 1E-9

这些宏定义可表示的最低有效数字。

11

FLT_MIN 1E-37

DBL_MIN 1E-37

LDBL_MIN 1E-37

这些宏定义了最小浮点值。

示例 1

以下是 C 库头文件 float.h,用于定义几个宏(浮点型)常量的值。

#include <stdio.h>
#include <float.h>

int main () {
   printf("The maximum value of float = %.10e", FLT_MAX);
   printf("The minimum value of float = %.10e", FLT_MIN);

   printf("The number of digits in the number = %.10d", FLT_MANT_DIG);
}

输出

执行上述代码后,我们得到以下结果 -

The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
The number of digits in the number = 7.2996655210e-312

C 库 - <limits.h>

C 库 limits.h 头文件定义了不同变量类型的各种属性。此头文件中定义的宏限制了各种变量类型(例如 char、int 和 long)的值。

这些限制规定变量不能存储超出这些限制的任何值,例如,无符号字符最多可以存储 255 个值。

<limits.h> 库宏

以下值是特定于实现的,并使用 #define 指令定义。但是,这些值不能低于给定值。

描述
CHAR_BIT 8 定义一个字节的位数。
SCHAR_MIN -128 定义有符号字符的最小值。
SCHAR_MAX +127 定义有符号字符的最大值。
UCHAR_MAX 255 定义无符号字符的最大值。
CHAR_MIN -128 定义字符类型的最小值,如果字符表示负值,则其值等于 SCHAR_MIN,否则为零。
CHAR_MAX +127 定义对于 char 类型,如果 char 表示负值,则其值等于 SCHAR_MAX,否则等于 UCHAR_MAX。
MB_LEN_MAX 16 定义多字节字符的最大字节数。
SHRT_MIN -32768 定义短整型的最小值。
SHRT_MAX +32767 定义短整型的最大值。
USHRT_MAX 65535 定义无符号短整型的最大值。
INT_MIN -2147483648 定义整数的最小值。
INT_MAX +2147483647 定义整数的最大值。
UINT_MAX 4294967295 定义无符号整数的最大值。
LONG_MIN -9223372036854775808 定义长整数的最小值。
LONG_MAX +9223372036854775807 定义长整数的最大值。
ULONG_MAX 18446744073709551615 定义无符号长整型的最大值。

请注意,上述宏有助于开发者编写高效的代码,使其在不同平台和编译器下保持一致。

示例 1

以下是基本的 C 库程序,用于显示 limits.h 头文件下各种宏的值范围。

#include <stdio.h>
#include <limits.h>

int main() {
   printf("The value of CHAR_BIT: %d
", CHAR_BIT);
   printf("The value of SCHAR_MIN: %d
", SCHAR_MIN);
   printf("The value of SCHAR_MAX: %d
", SCHAR_MAX);
   printf("The value of UCHAR_MAX: %u
", UCHAR_MAX);
   printf("The value of CHAR_MIN: %d
", CHAR_MIN);
   printf("The value of CHAR_MAX: %d
", CHAR_MAX);
   printf("The value of MB_LEN_MAX: %d
", MB_LEN_MAX);
   printf("The value of SHRT_MIN: %d
", SHRT_MIN);
   printf("The value of SHRT_MAX: %d
", SHRT_MAX);
   printf("The value of USHRT_MAX: %u
", USHRT_MAX);
   printf("The value of INT_MIN: %d
", INT_MIN);
   printf("The value of INT_MAX: %d
", INT_MAX);
   printf("The value of UINT_MAX: %u
", UINT_MAX);
   printf("The value of LONG_MIN: %ld
", LONG_MIN);
   printf("The value of LONG_MAX: %ld
", LONG_MAX);
   printf("The value of ULONG_MAX: %lu
", ULONG_MAX);
   return 0;
}

输出

执行上述代码后,我们得到以下结果 -

The value of CHAR_BIT: 8
The value of SCHAR_MIN: -128
The value of SCHAR_MAX: 127
The value of UCHAR_MAX: 255
The value of CHAR_MIN: -128
The value of CHAR_MAX: 127
The value of MB_LEN_MAX: 16
The value of SHRT_MIN: -32768
The value of SHRT_MAX: 32767
The value of USHRT_MAX: 65535
The value of INT_MIN: -2147483648
The value of INT_MAX: 2147483647
The value of UINT_MAX: 4294967295
The value of LONG_MIN: -9223372036854775808
The value of LONG_MAX: 9223372036854775807
The value of ULONG_MAX: 18446744073709551615

C 库 - <locale.h>

locale.h 头文件定义了特定于位置的设置,例如日期格式和货币符号。您将找到几个定义的宏以及一个重要的结构体 struct lconv 和下面列出的两个重要函数。

库宏

以下是头文件中定义的宏,这些宏将在下面列出的两个函数中使用 -

Sr.No. 宏 &说明
1

LC_ALL

设置所有内容。

2

LC_COLLATE

影响 strcoll 和 strxfrm 函数。

3

LC_CTYPE

影响所有字符函数。

4

LC_MONETARY

影响提供的货币信息通过 localeconv 函数。

5

LC_NUMERIC

影响小数点格式和 localeconv 函数提供的信息。

6

LC_TIME

影响 strftime 函数。

库函数

以下是在头文件 locale.h 中定义的函数 -

序列号 函数及说明
1 char *setlocale(int category, const char *locale)

设置或读取位置相关信息。

2 struct lconv *localeconv(void)

设置或读取位置相关信息。

C 库 - <math.h>

math.h 头文件定义了各种数学函数和一个宏。此库中所有可用的函数都以 double 为参数,并返回 double 作为结果。

库宏

此库中仅定义了一个宏 -

序列号 宏 &说明
1

HUGE_VAL

当函数结果无法用浮点数表示时,使用此宏。如果正确结果的幅值过大而无法表示,函数会将 errno 设置为 ERANGE 以指示范围错误,并返回一个由宏 HUGE_VAL 或其负数 (-HUGE_VAL) 指定的特定超大值。

如果结果幅值过小,则返回零值。在这种情况下,errno 可能会或可能不会设置为 ERANGE。

库函数

以下是在头文件 math.h 中定义的函数 -

序号 函数 &说明
1 double acos(double x)

返回 x 的反余弦值(以弧度为单位)。

2 double asin(double x)

返回 x 的反正弦值(以弧度为单位)。

3 double atan(double x)

返回 x 的反正切值(以弧度为单位)。

4 double atan2(double y, double x)

根据 y/x 的符号,返回 y/x 的反正切值(以弧度为单位),以确定正确的象限。

5 double cos(double x)

返回弧度角的余弦值x。

6 double cosh(double x)

返回 x 的双曲余弦值。

7 double sin(double x)

返回弧度角 x 的正弦值。

8 double sinh(double x)

返回 x 的双曲正弦值。

9 tan(double x)

返回给定角度 (x) 的正切值。

10 double tanh(double x)

返回 x 的双曲正切值。

11 double exp(double x)

返回 e 的 x 次方值。

12 double frexp(double x, int *exponent)

返回值为尾数,exponent 指向的整数为指数。结果值为 x = 尾数 * 2 ^ 指数。

13 double ldexp(double x, int exponent)

返回 x 乘以 2 的指数次方。

14 double log(double x)

返回自然对数(以 e 为底的对数) x.

15 double log10(double x)

返回 x 的常用对数(以 10 为底的对数)。

16 double modf(double x, double *integer)

返回值为小数部分(小数点后的部分),并将整数部分设置为整数部分。

17 double pow(double x, double y)

返回 x 的 y 次幂。

18 double sqrt(double x)

返回 x 的平方根。

19 double ceil(double x)

返回大于或等于 x 的最小整数值。

20 double fabs(double x)

返回 x 的绝对值。

21 double floor(double x)

返回小于或等于 x 的最大整数值。

22 double fmod(double x, double y)

返回 x 除以 y 后的余数。

23 double round(double x)

返回 x 的最接近整数值(四舍五入后的值)。

C 库 - <setjmp.h>

setjmp.h 头文件定义了宏 setjmp()、函数 longjmp() 和一个变量类型 jmp_buf,用于绕过正常的函数调用和返回规则。

库变量

以下是头文件 setjmp.h 中定义的变量类型 -

Sr.No. 变量 &描述
1

jmp_buf

这是一个数组类型,用于保存宏 setjmp() 和函数 longjmp() 的信息。

库宏

此库中仅定义了一个宏 -

序号 宏 &说明
1 int setjmp(jmp_buf environment)

此宏将当前环境保存到变量environment中,以供函数longjmp()稍后使用。如果此宏直接从宏调用返回,则返回零,但如果它从 longjmp() 函数调用返回,则返回非零值。

库函数

以下是头文件 setjmp.h 中定义的唯一函数 -

Sr.No. 函数 &说明
1 void longjmp(jmp_buf environment, int value)

此函数将恢复上次调用 setjmp() 宏时保存的环境,该调用与程序的同一调用中调用的 jmp_buf 宏时使用相应的 jmp_buf 参数进行操作。

C 库 - <signal.h>

signal.h 头文件定义了一个变量类型 sig_atomic_t、两个函数调用以及几个宏,用于处理程序执行期间报告的不同信号。

库变量

以下是头文件 signal.h 中定义的变量类型 -

Sr.No. 变量 &描述
1

sig_atomic_t

这是一个int类型,在信号处理程序中用作变量。这是一个整型对象,即使在存在异步信号的情况下,也可以作为原子实体访问。

库宏

以下是在头文件 signal.h 中定义的宏,这些宏将在以下列出的两个函数中使用。 SIG_ 宏与信号函数一起使用来定义信号函数。

Sr.No. 宏 &描述
1

SIG_DFL

默认信号处理程序。

2

SIG_ERR

表示信号错误。

3

SIG_IGN

信号忽略。

SIG 宏用于在以下情况下表示信号编号 -

序号 宏与描述
1

SIGABRT

程序异常终止。

2

SIGFPE

浮点错误,例如除以零。

3

SIGILL

非法操作。

4

SIGINT

中断信号,例如ctrl-C。

5

SIGSEGV

无效的存储访问,例如段违规。

6

SIGTERM

终止请求。

库函数

以下是在头文件 signal.h 中定义的函数 -

Sr.No. 函数& 说明
1 void (*signal(int sig, void (*func)(int)))(int)

此函数设置一个用于处理信号的函数,即信号处理程序。

2 int raise(int sig)

此函数生成信号 sig。sig 参数与 SIG 宏兼容。

C 库 - <stdarg.h>

头文件 stdarg.h 定义了一个变量类型 va_list 和三个宏,当函数的参数数量未知(即参数数量可变)时,可以使用它们来获取函数中的参数。

可变参数的函数在参数列表末尾使用省略号 (,...) 来定义。

库变量

以下是头文件 stdarg.h 中定义的变量类型 -

Sr.No. 变量 &说明
1

va_list

此类型适用于保存三个宏 va_start()、va_arg()va_end() 所需的信息。

库宏

以下是在头文件 stdarg.h 中定义的宏 -

Sr.No. 宏 &说明
1 void va_start(va_list ap, parmN)

此宏允许访问可变参数函数参数。

2 type va_arg(va_list ap, type)

此宏检索函数参数列表中类型为 type 的下一个参数。

3 void va_end(va_list ap)

此宏允许结束对可变函数参数的遍历。

4 void va_copy( va_list dest, va_​​list src )

此宏复制可变函数参数。

C 库 - <stddef.h>

stddef.h 头文件定义了各种变量类型和宏。其中许多定义也出现在其他头文件中。

库变量

以下是头文件 stddef.h 中定义的变量类型 -

Sr.No. 变量 &说明
1

ptrdiff_t

这是一个有符号整数类型,是两个指针相减的结果。

2

size_t

这是一个无符号整数类型,是 sizeof 关键字的结果。

3

wchar_t

这是一个宽字符常量大小的整数类型。

库宏

以下是在头文件 stddef.h 中定义的宏 -

Sr.No. 宏 &说明
1 NULL

此宏返回一个空指针常量的值。

2 offsetof(type,member-designator)

这将返回一个 size_t 类型的常量整数,该常量表示结构体成员相对于结构体开头的偏移量(以字节为单位)。成员由 member-designator 指定,结构体名称由 type 指定。

C 库 - <stdio.h>

stdio.h 头文件定义了三种变量类型、几个宏以及用于执行输入和输出的各种函数。

库变量

以下是头文件 stdio.h 中定义的变量类型 -

Sr.No. 变量 &说明
1

size_t

这是一个无符号整数类型,是 sizeof 关键字的结果。

2

FILE

这是一个适用于存储文件流信息的对象类型。

3

fpos_t

这是一个适用于存储文件中任意位置的对象类型。

库宏

以下是头文件 stdio.h 中定义的宏 -

Sr.No. 宏 &说明
1

NULL

此宏是空指针常量的值。

2

_IOFBF、_IOLBF _IONBF

这些宏扩展为具有不同值的整型常量表达式,适合用作 setvbuf 函数的第三个参数。

3

BUFSIZ

此宏是一个整数,表示setbuf 函数。

4

EOF

此宏是一个负整数,表示已到达文件末尾。

5

FOPEN_MAX

此宏是一个整数,表示系统可以保证同时打开的最大文件数。

6

FILENAME_MAX

此宏是一个整数,表示适合保存最长文件名的字符数组的最长长度。如果实现没有限制,则此值应为建议的最大值。

7

L_tmpnam

此宏是一个整数,表示适合保存由 tmpnam 函数创建的最长临时文件名的字符数组的最长长度。

8

SEEK_CUR, SEEK_END,SEEK_SET

这些宏在 fseek 函数中用于定位文件中的不同位置。

9

TMP_MAX

此宏表示函数 tmpnam 可以生成的唯一文件名的最大数量。

10

stderr、stdinstdout

这些宏是指向 FILE 类型的指针,分别对应标准错误、标准输入和标准输出流。

库函数

以下是头文件 stdio.h 中定义的函数 -

序号 函数及说明
1 int fclose(FILE *stream)

关闭流。所有缓冲区均已刷新。

2 void clearerr(FILE *stream)

清除给定流的文件结束和错误指示符。

3 int feof(FILE *stream)

测试给定流的文件结束指示符。

4 int ferror(FILE *stream)

测试给定流的错误指示器。

5 int fflush(FILE *stream)

刷新流的输出缓冲区。

6 int fgetpos(FILE *stream, fpos_t *pos)

获取流的当前文件位置并将其写入pos。

7 FILE *fopen(const char *filename, const char *mode)

使用给定模式打开 filename 指向的文件名。

8 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

将数据从给定流读取到 ptr 指向的数组中。

9 FILE *freopen(const char *filename, const char *mode, FILE *stream)

将新文件名与给定的打开流关联,同时关闭流中的旧文件。

10 int fseek(FILE *stream, long int offset, int whence)

将流的文件位置设置为给定的偏移量。参数 offset 表示从给定 whence 位置开始查找的字节数。

11 int fsetpos(FILE *stream, const fpos_t *pos)

将给定流的文件位置设置为给定位置。参数 pos 是由函数 fgetpos 指定的位置。

12 long int ftell(FILE *stream)

返回给定流的当前文件位置。

13 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

将 ptr 指向的数组中的数据写入给定的流。

14 int remove(const char *filename)

删除给定的文件名,使其不再可访问。

15 int rename(const char *old_filename, const char *new_filename)

将 old_filename 指向的文件名更改为 new_filename。

16 void rewind(FILE *stream)

将文件位置设置为给定流的文件开头。

17 void setbuf(FILE *stream, char *buffer)

定义流的缓冲方式。

18 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

另一个定义如何缓冲流的函数。

19 FILE *tmpfile(void)

以二进制更新模式 (wb+) 创建临时文件。

20 char *tmpnam(char *str)

生成并返回一个不存在的有效临时文件名。

21 int fprintf(FILE *stream, const char *format, ...)

将格式化的输出发送到流。

22 int printf(const char *format, ...)

将格式化的输出发送到标准输出。

23 int sprintf(char *str, const char *format, ...)

将格式化的输出发送到字符串。

24 int vfprintf(FILE *stream, const char *format, va_​​list arg)

使用参数列表将格式化的输出发送到流。

25 int vprintf(const char *format, va_​​list arg)

使用参数列表将格式化的输出发送到标准输出。

26 int vsprintf(char *str, const char *format, va_​​list arg)

使用参数列表将格式化的输出发送到字符串。

27 int fscanf(FILE *stream, const char *format, ...)

从流中读取格式化的输入。

28 int scanf(const char *format, ...)

从标准输入读取格式化的输入。

29 int sscanf(const char *str, const char *format, ...)

从字符串读取格式化的输入。

30 int fgetc(FILE *stream)

从指定的流中获取下一个字符(无符号字符),并将流的位置指示器向前移动。

31 char *fgets(char *str, int n, FILE *stream)

从指定的流中读取一行并将其存储到 str 指向的字符串中。当读取到 (n-1) 个字符、读到换行符或到达文件末尾(以先到者为准)时停止。

32 int fputc(int char, FILE *stream)

将参数 char 指定的字符(无符号字符)写入指定的流,并将流的位置指示器向前移动。

33 int fputs(const char *str, FILE *stream)

将字符串写入指定的流,直到(但不包括)null字符。

34 int getc(FILE *stream)

从指定流中获取下一个字符(无符号字符),并将流的位置指示器向前移动。

35 int getchar(void)

从标准输入中获取一个字符(无符号字符)。

36 char *gets(char *str)

从标准输入读取一行并将其存储到 str 指向的字符串中。当读到换行符或到达文件末尾(以先到者为准)时,它会停止。

37 int putc(int char, FILE *stream)

将参数 char 指定的字符(无符号字符)写入指定的流,并将流的位置指示器向前移动。

38 int putchar(int char)

将参数 char 指定的字符(无符号字符)写入标准输出。

39 int puts(const char *str)

将字符串写入标准输出,但不包括空字符。输出后会附加一个换行符。

40 int ungetc(int char, FILE *stream)

将字符 char(无符号字符)推送到指定的流,以便读取下一个字符。

41 void perror(const char *str)

向 stderr 打印描述性错误消息。首先打印字符串 str,然后打印冒号,最后打印空格。

C 库 - <stdlib.h>

stdlib.h 头文件定义了四种变量类型、几个宏以及用于执行常规功能的各种函数。

库变量

以下是头文件 stdlib.h 中定义的变量类型 -

Sr.No. 变量 &说明
1

size_t

这是一个无符号整数类型,是 sizeof 关键字的结果。

2

wchar_t

这是一个整数类型,其大小与 字符常量相同。

3

div_t

这是 div 函数返回的结构体。

4

ldiv_t

这是 ldiv 函数返回的结构体。

库宏

以下是在头文件 stdlib.h 中定义的宏 -

Sr.No. 宏 &说明
1

NULL

此宏是空指针常量的值。

2

EXIT_FAILURE

这是退出函数在失败时返回的值。

3

EXIT_SUCCESS

这是退出函数在成功时返回的值。

4

RAND_MAX

此宏是 rand 函数返回的最大值。

5

MB_CUR_MAX

此宏是多字节字符集中的最大字节数,不能大于 MB_LEN_MAX。

库函数

以下是在头文件 stlib.h 中定义的函数 -

Sr.No. 函数 &说明
1 double atof(const char *str)

将参数 str 指向的字符串转换为浮点数(double 类型)。

2 int atoi(const char *str)

将参数 str 指向的字符串转换为整数(int 类型)。

3 long int atol(const char *str)

将参数 str 指向的字符串转换为长整型(long int 类型)。

4 double strtod(const char *str, char **endptr)

将参数 str 指向的字符串转换为浮点型(double 类型)。

5 long int strtol(const char *str, char **endptr, int base)

将参数 str 指向的字符串转换为长整型(long int 类型)。

6 unsigned long int strtoul(const char *str, char **endptr, int base)

将参数 str 指向的字符串转换为无符号长整型(unsigned long int 类型)。

7 void *calloc(size_t nitems, size_t size)

分配请求的内存并返回指向该内存的指针。

8 void free(void *ptr

释放先前通过调用 calloc、mallocrealloc 分配的内存。

9 void *malloc(size_t size)

分配请求的内存并返回指向该内存的指针。

10 void *realloc(void *ptr, size_t size)

尝试调整 ptr 指向的内存块的大小,该内存块之前已通过调用 malloccalloc 分配。

11 void abort(void)

导致程序异常终止。

12 int atexit(void (*func)(void))

导致程序终止时调用指定的函数 func正常终止。

13 void exit(int status)

使程序正常终止。

14 char *getenv(const char *name)

搜索名称指向的环境字符串,并将关联值返回给该字符串。

15 int system(const char *string)

将字符串指定的命令传递给主机环境,由命令处理器执行。

16 void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))

执行二分查找。

17 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

对数组进行排序。

18 int abs(int x)

返回 x 的绝对值。

19 div_t div(int numer, int denom)

将 numer(分子)除以 denom(分母)。

20 long int labs(long int x)

返回 x 的绝对值。

21 ldiv_t ldiv(long int numer, long int denom)

将 numer(分子)除以 denom(分母)。

22 int rand(void)

返回 0 到 RAND_MAX 范围内的伪随机数。

23 void srand(unsigned int seed)

此函数为函数 rand 使用的随机数生成器设定种子。

24 int mblen(const char *str, size_t n)

返回参数 str 指向的多字节字符的长度。

25 size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)

将参数 str 指向的多字节字符串转换为 pwcs 指向的数组。

26 int mbtowc(whcar_t *pwc, const char *str, size_t n)

检查参数 str 指向的多字节字符。

27 size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)

将数组 pwcs 中存储的代码转换为多字节字符,并将其存储在字符串中str.

28 int wctomb(char *str, wchar_t wchar)

检查与参数 wchar 给出的多字节字符对应的代码。

C 库 - <string.h>

string.h 头文件定义了一个变量类型、一个宏以及用于操作字符数组的各种函数。

库变量

以下是头文件 string.h 中定义的变量类型 -

Sr.No. 变量 &说明
1

size_t

这是一个无符号整数类型,是 sizeof 关键字的结果。

C 库 string.h 宏

以下是在头文件 string.h 中定义的宏 -

Sr.No. 宏 &说明
1

NULL

此宏是空指针常量的值。

C 库 string.h 函数

以下是在头文件 string.h 中定义的函数 -

Sr.No. 函数 &说明
1 void *memchr(const void *str, int c, size_t n)

在参数 str 指向的字符串的前 n 个字节中,查找字符 c(无符号字符)的首次出现。

2 int memcmp(const void *str1, const void *str2, size_t n)

比较 str1 的前 n 个字节和str2.

3 void *memcpy(void *dest, const void *src, size_t n)

将 n 个字符从 src 复制到 dest.

4 void *memmove(void *dest, const void *src, size_t n)

另一个函数用于将 n 个字符从 str2 复制到 str1

5 void *memset(void *str, int c, size_t n)

将字符 c(无符号字符)复制到参数 str 指向的字符串的前 n 个字符处。

6 char *strcat(char *dest, const char *src)

将参数指向的字符串附加到 str 指向的字符串中。将 src 指向的字符串添加到 dest 指向的字符串末尾。

7 char *strncat(char *dest, const char *src, size_t n)

src 指向的字符串附加到 dest 指向的字符串末尾,最多 n 个字符。

8 char *strchr(const char *str, int c)

搜索第一个参数 str 指向的字符串中字符 c(无符号字符)的出现次数。

9 int strcmp(const char *str1, const char *str2)

比较 str1 指向的字符串与 str2 指向的字符串。

10 int strncmp(const char *str1, const char *str2, size_t n)

比较最多获取 str1str2 的前 n 个字节。

11 int strcoll(const char *str1, const char *str2)

比较字符串 str1str2。结果取决于位置的 LC_COLLATE 设置。

12 char *strcpy(char *dest, const char *src)

src 指向的字符串复制到 dest

13 char *strncpy(char *dest, const char *src, size_t n)

src 指向的字符串中最多 n 个字符复制到dest.

14 size_t strcspn(const char *str1, const char *str2)

计算 str1 中完全由 str2 中不存在的字符组成的初始段的长度。

15 char *strerror(int errnum)

在内部数组中搜索错误编号 errnum,并返回指向错误消息字符串的指针。

16 size_t strlen(const char *str)

计算字符串 str 的长度,直到(但不包括)终止空字符。

17 char *strpbrk(const char *str1, const char *str2)

在字符串 str1 中查找第一个与 str2 中指定的任意字符匹配的字符。

18 char *strrchr(const char *str, int c)

在参数 str 指向的字符串中搜索字符 c(无符号字符)的最后一次出现。

19 size_t strspn(const char *str1, const char *str2)

计算 str1 中完全由 str2 中的字符组成的初始段的长度。

20 char *strstr(const char *haystack, const char *needle)

查找字符串 haystack 中第一次出现的完整字符串 needle(不包括终止空字符)。

21 char *strtok(c​​har *str, const char *delim)

将字符串 str 拆分为一系列由 delim 分隔的标记。

22 size_t strxfrm(char *dest, const char *src, size_t n)

将字符串 src 的前 n 个字符转换为当前语言环境,并将它们放入字符串 dest 中。

C 库 - <time.h>

time.h 头文件定义了四种变量类型、两个宏以及用于操作日期和时间的各种函数。

库变量

以下是 time.h 头文件中定义的变量类型 -

Sr.No. 变量 &说明
1

size_t

这是一个无符号整数类型,是 sizeof 关键字的结果。

2

clock_t

这是一个适合存储处理器时间的类型。

3

time_t

这是一个适合存储日历时间的类型。

4

struct tm

这是一个用于保存时间和日期的结构体。

C 库宏

以下是在头文件 time.h 中定义的宏 -

Sr.No. 宏 &说明
1

NULL

此宏是空指针常量的值。

2

CLOCKS_PER_SEC

此宏表示每秒处理器时钟数。

C 库 time.h 函数

以下是在头文件 time.h 中定义的函数 -

Sr.No. 函数 &说明
1 char *asctime(const struct tm *timeptr)

返回一个指向字符串的指针,该字符串表示结构体 timeptr 的日期和时间。

2 clock_t clock(void)

返回自实现定义时代(通常是程序开始)以来使用的处理器时钟时间。

3 char *ctime(const time_t *timer)

根据参数 timer 返回表示本地时间的字符串。

4 double difftime(time_t time1, time_t time2)

返回 time1 和 time2 之间的秒差 (time1-time2)。

5 struct tm *gmtime(const time_t *timer)

值定时器的值被分解为结构体 tm,并以协调世界时 (UTC)(也称为格林威治标准时间 (GMT))表示。

6 struct tm *localtime(const time_t *timer)

定时器的值被分解为结构体 tm,并以本地时区表示。

7 time_t mktime(struct tm *timeptr)

根据本地时间将 timeptr 指向的结构体转换为 time_t 值时区。

8 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

根据 format 中定义的格式化规则,格式化结构体 timeptr 中的时间,并将其存储在 str 中。

9 time_t time(time_t *timer)

计算当前日历时间并将其编码为 time_t 格式。

10 size_t wcsftime( wchar_t* str, size_t count, const wchar_t* format, const struct tm* time )

将 tm 对象转换为自定义宽字符串文本表示形式。