C Standard Library 简明教程
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_posn 和 n_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 头文件中定义的函数:
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_arg 和 va_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 中定义的函数 -
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 |
|
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 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 格式。 |