C Standard Library 简明教程

C Standard Library - Quick Guide

C Library - <assert.h>

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

已定义的宏 assert 指的是另一个宏 NDEBUG ,它不属于 <assert.h> 的一部分。如果在包含 <assert.h> 时在源文件中将 NDEBUG 定义为宏名称,则 assert 宏将按如下方式定义 −

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

Library Macros

以下是头 assert.h 中定义的唯一函数 −

Sr.No.

Function & Description

1

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

C Library - <ctype.h>

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

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

如果参数 c 满足所描述的条件,所有函数都会返回非零(真),不满足则返回零(假)。

Library Functions

ctype.h 中定义的函数如下:

Sr.No.

Function & Description

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”的转换函数。

Sr.No.

Function & Description

1

int tolower(int c) 此函数用于将大写字母转换为小写字母。

2

int toupper(int c) 此函数用于将小写字母转换为大写字母。

Character Classes

Sr.No.

Character Class & Description

1

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

2

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

3

Lowercase letters 这是一组小写字母 { 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

Uppercase letters 这是一组大写字母 {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

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

6

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

7

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

} ~

8

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

9

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

10

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

11

Control characters 在 ASCII 中,这些字符具有八进制代码 000 到 037,以及 177 (DEL)。

12

Blank characters 这些是空格和制表符。

13

C Library - <errno.h>

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

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

errno.h 头文件还定义了一个列出不同错误代码的宏列表,它将扩展为具有类型 int 的整数常量表达式。

Library Macros

以下是 头 errno.h 中定义的宏 −

Sr.No.

Macro & Description

1

extern int errno 这是由系统调用和一些库函数在出现错误时设置的宏,以指示出了什么问题。

2

EDOM Domain Error 此宏表示域错误,它发生在输入参数超出数学函数所定义的域时,且 errno 设置为 EDOM。

3

ERANGE Range Error 此宏表示范围错误,它发生在输入参数超出数学函数所定义的范围时,且 errno 设置为 ERANGE。

C Library - <float.h>

C 标准库的 float.h 头文件包含了一组与浮点值相关的各种与平台相关的常量。这些常量由 ANSI C 提议。它们可以制作更可移植的程序。在检查所有常量之前,了解浮点数由以下四个元素组成会很好 −

Sr.No.

Component & Component Description

1

S sign ( +/- )

2

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

3

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

4

p 精度,即有效数字中的 base-b 位数。

根据上述 4 个组成部分,浮点数将以以下形式显示其值 −

floating-point = ( S ) p x be

or

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

Library Macros

以下值特定于实现,并且通过 #define 指令定义,但是这些值可能不会低于此处所示的值。请注意,在所有实例中,FLT 指的是类型 float ,DBL 指的是 double ,而 LDBL 指的是 long double

Sr.No.

Macro & Description

1

FLT_ROUNDS 定义浮点加法的舍入模式,它可以具有以下任何值 −-1 - 不确定0 - 向零方向1 - 向最接近方向2 - 向正无穷大方向3 - 向负无穷大方向

2

FLT_RADIX 2 这定义了指数的基数基数表示形式。2 进制是二进制,10 进制是正常的十进制表示形式,16 进制是十六进制。

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 这些宏定义 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 这些宏定义最小浮点值。

Example

以下示例展示了 float.h 文件中定义的几个常量用法。

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

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

   printf("The number of digits in the number = %.10e\n", 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 Library - <limits.h>

limits.h 标头决定了各个变量类型的各种属性。这个标头中定义的宏限制了各种变量类型的取值,例如 char、int 和 long。

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

Library Macros

以下值是实现特定的,并且用 #define 指令定义的,但这些值可能不会低于此处给出的值。

Macro

Value

Description

CHAR_BIT

8

定义字节中的位数。

SCHAR_MIN

-128

定义有符号 char 的最小值。

SCHAR_MAX

+127

定义有符号 char 的最大值。

UCHAR_MAX

255

定义无符号 char 的最大值。

CHAR_MIN

-128

定义类型 char 的最小值,如果 char 表示负值,则其值将等于 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 的最小值。

INT_MAX

+2147483647

定义 int 的最大值。

UINT_MAX

4294967295

定义无符号 int 的最大值。

LONG_MIN

-9223372036854775808

定义 long int 的最小值。

LONG_MAX

+9223372036854775807

定义 long int 的最大值。

ULONG_MAX

18446744073709551615

定义无符号 long int 的最大值。

Example

以下示例显示了 limits.h 文件中定义的几个常量的用法。

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

int main() {

   printf("The number of bits in a byte %d\n", CHAR_BIT);

   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);

   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX);

   printf("The minimum value of INT = %d\n", INT_MIN);
   printf("The maximum value of INT = %d\n", INT_MAX);

   printf("The minimum value of CHAR = %d\n", CHAR_MIN);
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);

   printf("The minimum value of LONG = %ld\n", LONG_MIN);
   printf("The maximum value of LONG = %ld\n", LONG_MAX);

   return(0);
}

让我们编译并运行上述程序,它将产生以下结果 −

The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -2147483648
The maximum value of INT = 2147483647
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -9223372036854775808
The maximum value of LONG = 9223372036854775807

C Library - <locale.h>

locale.h 标头定义了位置特定设置,例如日期格式和货币符号。您会发现许多已定义的宏连同一个重要的结构 struct lconv 和两个在下面列出的重要函数。

Library Macros

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

Sr.No.

Macro & Description

1

LC_ALL Sets everything.

2

LC_COLLATE 影响 strcoll 和 strxfrm 函数。

3

LC_CTYPE Affects all character functions.

4

LC_MONETARY 影响由 localeconv 函数提供的货币信息。

5

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

6

LC_TIME Affects the strftime function.

Library Functions

以下在标头 locale.h 中定义了函数 −

Sr.No.

Function & Description

1

char *setlocale(int category, const char *locale) 设置或读取地点相关信息。

2

struct lconv *localeconv(void) 设置或读取位置相关信息。

Library Structure

typedef struct {
   char *decimal_point;
   char *thousands_sep;
   char *grouping;
   char *int_curr_symbol;
   char *currency_symbol;
   char *mon_decimal_point;
   char *mon_thousands_sep;
   char *mon_grouping;
   char *positive_sign;
   char *negative_sign;
   char int_frac_digits;
   char frac_digits;
   char p_cs_precedes;
   char p_sep_by_space;
   char n_cs_precedes;
   char n_sep_by_space;
   char p_sign_posn;
   char n_sign_posn;
} lconv

以下是每个字段的说明−

Sr.No.

Field & Description

1

decimal_point 用于非货币值的十进制小数点字符。

2

thousands_sep 用于非货币值的千位分隔符字符。

3

grouping 指示非货币数量中每组数字大小的字符串。每个字符表示一个整数,指定当前组中的数字数量。值为 0 意味着要对其余组使用前一个值。

4

int_curr_symbol 这是使用的国际货币符号的一个字符串。前三个字符是 ISO 4217:1987 指定的,第四个字符是将货币符号与货币数量分开的字符。

5

currency_symbol 用于货币的本地符号。

6

mon_decimal_point 用于货币值的十进制小数点字符。

7

mon_thousands_sep 用于货币值的千位分隔符字符。

8

mon_grouping 元素定义了货币值中数字组的大小。每个字符表示一个整数,指定当前组中的数字数量。值为 0 意味着要对其余组使用前一个值。

9

positive_sign 用于正货币值的字符。

10

negative_sign 用于负货币值的字符。

11

int_frac_digits 国际货币值小数点后要显示的数字位数。

12

frac_digits 货币值小数点后要显示的数字位数。

13

p_cs_precedes 如果等于 1,则 currency_symbol 出现在正货币值之前。如果等于 0,则 currency_symbol 出现在正货币值之后。

14

p_sep_by_space 如果等于 1,则 currency_symbol 由一个空格与正货币值分开。如果等于 0,则 currency_symbol 与正货币值之间没有空格。

15

n_cs_precedes 如果等于 1,则 currency_symbol 位于负货币值之前。如果等于 0,则 currency_symbol 位于负货币值之后。

16

n_sep_by_space 如果为 1,则 currency_symbol 与负货币值之间用空格隔开。如果为 0,则 currency_symbol 与负货币值之间没有空格。

17

p_sign_posn 正货币值中 positive_sign 的位置。

18

n_sign_posn 负货币值中 negative_sign 的位置。

p_sign_posnn_sign_posn 用以下值:

Value

Description

0

括号括起值和 currency_symbol。

1

符号位于值和 currency_symbol 之前。

2

符号位于值和 currency_symbol 之后。

3

符号紧接在值和 currency_symbol 之前。

4

符号紧接在值和 currency_symbol 之后。

C Library - <math.h>

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

Library Macros

此库中仅定义了一个宏 −

Sr.No.

Macro & Description

1

HUGE_VAL 此宏在函数的结果可能无法表示为浮点数时使用。如果正确结果的绝对值太大而无法表示,则函数将 errno 设置为 ERANGE 以指示范围错误,并返回一个具体的值,超出了名为 HUGE_VAL 或其否定值 (- HUGE_VAL) 的宏。如果结果的绝对值太小,则返回零。在这种情况下,errno 可能设置也可能不设置为 ERANGE。

Library Functions

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

Sr.No.

Function & Description

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 的反正切。

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

double tanh(double x) 返回 x 的双曲正切。

10

double exp(double x) 返回 e 乘方到 x 次的值。

11

double frexp(double x, int *exponent) 返回的数值为有效数字,而 exponent 指向的整数为指数。结果值为 x = 有效数字 * 2 ^ 指数。

12

double ldexp(double x, int exponent) 返回 x 乘以 2 的指数次方。

13

double log(double x) 返回 x 的自然对数(以 e 为底的对数)。

14

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

15

double modf(double x, double *integer) 返回的值是小数部分(小数点后面的部分),并将整数部分设置为 integer。

16

double pow(double x, double y) 返回 x 乘方到 y 次的值。

17

double sqrt(double x) 返回 x 的平方根。

18

double ceil(double x) 返回大于或等于 x 的最小整数值。

19

double fabs(double x) 返回 x 的绝对值。

20

double floor(double x) 返回小于或等于 x 的最大整数值。

21

double fmod(double x, double y) 返回 x 除以 y 的余数。

C Library - <setjmp.h>

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

Library Variables

头文件 setjmp.h 中定义的变量类型如下 −

Sr.No.

Variable & Description

1

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

Library Macros

此库中仅定义了一个宏 −

Sr.No.

Macro & Description

1

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

Library Functions

头文件 setjmp.h 中定义的唯一一个函数如下 −

Sr.No.

Function & Description

1

void longjmp(jmp_buf environment, int value) 此函数在程序的相同调用中使用对应的 jmp_buf 参数恢复 setjmp() 宏最近一次调用保存的环境。

C Library - <signal.h>

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

Library Variables

以下是头 signal.h 中定义的变量类型 −

Sr.No.

Variable & Description

1

sig_atomic_t 这是 int 类型,并且用作信号处理程序中的变量。这是对象的整体类型,甚至在异步信号出现时,都可作为原子实体访问。

Library Macros

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

Sr.No.

Macro & Description

1

SIG_DFL Default signal handler.

2

SIG_ERR Represents a signal error.

3

SIG_IGN Signal ignore.

SIG 宏用于在以下条件中表示信号数 −

Sr.No.

Macro & Description

1

SIGABRT Abnormal program termination.

2

SIGFPE 浮点错误,如除以零。

3

SIGILL Illegal operation.

4

SIGINT 中断信号,如 Ctrl-C。

5

SIGSEGV 无效访问存储,如段错误。

6

SIGTERM Termination request.

Library Functions

以下是在头文件中定义的功能 signal.h −

Sr.No.

Function & Description

1

void (*signal(int sig, void (*func)(int)))(int) 该功能设置处理信号的函数,即信号处理程序。

2

int raise(int sig) 此功能导致生成信号 sig 。sig参数与 SIG 宏兼容。

C Library - <stdarg.h>

stdarg.h 标头定义了一个变量类型 va_list 和三个宏,当参数数量未知(即,可变数量参数)时,可用于获取函数中参数。

可变参数函数用省略号(,…​)定义,位于参数列表末尾。

Library Variables

以下是在标头 stdarg.h 中定义的变量类型 −

Sr.No.

Variable & Description

1

va_list 这是一种适合于保存三个宏 va_start(), va_arg()va_end() 所需信息的类型。

Library Macros

以下是在标头 stdarg.h 中定义的宏 −

Sr.No.

Macro & Description

1

void va_start(va_list ap, last_arg) 该宏初始化 ap 用于 va_argva_end 宏的变量。 last_arg 是传递给函数的已知最后一个固定参数,即省略号之前的参数。

2

type va_arg(va_list ap, type) 此宏用类型 type 在函数的参数列表中检索下一个参数。

3

void va_end(va_list ap) 此宏允许具有使用 va_start 宏返回的可变参数的函数。如果在从函数返回之前未调用 va_end ,则结果是未定义的。

C Library - <stddef.h>

stddef.h 标识符定义了多种变量类型和宏。很多这些定义也出现在其他标识符中。

Library Variables

stddaef.h 中定义的变量类型如下:

Sr.No.

Variable & Description

1

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

2

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

3

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

Library Macros

stddaef.h 中定义的宏如下:

Sr.No.

Macro & Description

1

NULL 这个宏是空指针常量的值。

2

offsetof(type, member-designator) 这将生成类型为 size_t 的常数整数,这是结构中成员相对于结构开头的字节偏移量。member-designator 给出成员,type 给出结构的名称。

C Library - <stdio.h>

stdio.h 头定义了 3 种变量类型、多个宏和多个用于执行输入和输出的函数。

Library Variables

以下是 stdio.h 头中定义的变量类型 −

Sr.No.

Variable & Description

1

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

2

FILE 这是一种适用于存储文件流信息的的 Object 类型。

3

fpos_t 这是一种适用于存储文件中任意位置信息的 Object 类型。

Library Macros

以下是 stdio.h 头中定义的宏 −

Sr.No.

Macro & Description

1

NULL 此宏是空指针常量的值。

2

_IOFBF, _IOLBF 和 * _IONBF*这些宏展开为具有不同值且适合作为 setvbuf 函数的第三个参数的整数常量表达式。

3

BUFSIZ 此宏是整数,表示 setbuf 函数使用的缓冲区大小。

4

EOF 此宏是负整数,表示已达文件结尾。

5

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

6

FILENAME_MAX 此宏是整数,表示适合容纳最长可能文件名的 char 数组的最长长度。如果实现没有限制,则此值应为建议的最大值。

7

L_tmpnam 此宏是一个整数,它代表适合保存 tmpnam 函数创建的最长可能临时文件名的最长 char 数组长度。

8

SEEK_CUR, SEEK_END,SEEK_SET 这些宏在 fseek 函数中用于查找文件中的不同位置。

9

TMP_MAX 此宏是 tmpnam 函数可生成的最大唯一文件名数量。

10

stderr, stdin,stdout 这些宏是 FILE 类型的指针,与标准错误、标准输入和标准输出流相对应。

Library Functions

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

Sr.No.

Function & Description

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, …​) 将格式化的输出发送到 stdout。

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) 使用参数列表将格式化的输出发送到 stdout。

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, …​) 从 stdin 读取格式化的输入。

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) 将字符串写入指定的流,直到(不包括)空字符。

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) 向标准错误输出打印描述性错误消息。首先打印字符串 str,后跟一个冒号,再跟一个空格。

C Library - <stdlib.h>

stdlib.h 头定义了四种变量类型、几个宏和各种函数,用于执行通用函数。

Library Variables

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

Sr.No.

Variable & Description

1

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

2

wchar_t 这是大小为 wide 字符常量的整数类型。

3

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

4

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

Library Macros

以下是 stdlib.h 头中定义的宏 −

Sr.No.

Macro & Description

1

NULL 此宏是空指针常量的值。

2

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

3

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

4

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

5

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

Library Functions

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

Sr.No.

Function & Description

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、malloc 或 realloc 而先前分配的内存分配内存。

9

void *malloc(size_t size) 分配所请求的内存并返回一个指向它的指针。

10

void *realloc(void *ptr, size_t size) 尝试调整事前通过调用 malloc 或 calloc 而分配的、ptr 所指向的内存块的大小。

11

void abort(void) 导致程序异常终止。

12

链接:../c_standard_library/c_function_atexit.html[int atexit(void ( func)(void))]Causes the specified function *func 程序正常终止时调用。

13

void exit(int status) 导致程序正常终止。

14

char *getenv(const char *name) 搜索环境字符串 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 数组中的代码转换为多字节字符,并将它们存储在字符串中。

28

int wctomb(char *str, wchar_t wchar) 检查由参数 wchar 给出的多字节字符对应的代码。

C Library - <string.h>

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

Library Variables

以下是头 string.h 中定义的变量类型 −

Sr.No.

Variable & Description

1

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

Library Macros

以下是头 string.h 中定义的宏 −

Sr.No.

Macro & Description

1

NULL 此宏是空指针常量的值。

Library Functions

以下是头 string.h 中定义的函数 −

Sr.No.

Function & Description

1

void *memchr(const void *str, int c, size_t n) 在参数 str 指向的字符串中搜索第一个出现字符 c(一个无符号字符)的位置,在字符串前 n 个字节中。

2

int memcmp(const void *str1, const void *str2, size_t n) 比较 str1 和 str2 前 n 个字节。

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(一个无符号 char)复制到 str 参数指向的字符串中,前 n 个字符。

6

char *strcat(char *dest, const char *src) 连接 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(一个无符号 char)。

9

int strcmp(const char *str1, const char *str2) 比较 str1 指向的字符串和 str2 指向的字符串。

10

int strncmp(const char *str1, const char *str2, size_t n) 最多比较 str1 和 str2 中的前 n 个字节。

11

int strcoll(const char *str1, const char *str2) 比较字符串 str1 和 str2。结果取决于当前位置的 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) 计算全是 str2 中无的字符的,str1 的初始部分的长度。

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(一个无符号 char)的最后一个出现位置。

19

size_t strspn(const char *str1, const char *str2) 计算全是 str2 中的字符的,str1 的初始部分的长度。

20

char *strstr(const char *haystack, const char *needle) 在 str2 中找到,整个字符串 needle 的第一个出现位置(不包括最后的空字符)。

21

char *strtok(char *str, const char *delim) 将字符串 str,按 delim 分隔符,分割成一系列的令牌。

22

链接:../c_standard_library/c_function_strxfrm.html[size_t strxfrm(char dest, const char *src, size_t n)]Transforms the first *n 将字符串 src 的字符转化为当前语言环境并放入字符串 dest 中。

C Library - <time.h>

time.h 头文件定义四种变量类型、两个宏和各种函数,用于处理日期和时间。

Library Variables

头文件 time.h 中定义的变量类型如下 −

Sr.No.

Variable & Description

1

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

2

clock_t 这是适合于存储处理器时间的类型。

3

time_t is 这是适合于存储日历时间的类型。

4

struct tm 这是用于保存时间和日期的结构。

tm结构具有以下定义:

struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */
};

Library Macros

以下为在头文件 time.h 中定义的宏 −

Sr.No.

Macro & Description

1

NULL 此宏是空指针常量的值。

2

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

Library Functions

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

Sr.No.

Function & Description

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) timer 的值被分解为结构 tm 并以协调世界时 (UTC)(也称为格林威治标准时间 (GMT))表示。

6

struct tm *localtime(const time_t *timer) 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 格式。