C 标准库 - 快速指南



C 库 - <assert.h>

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

定义的宏assert引用了另一个宏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),否则返回零(false)。

库函数

以下是头文件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)

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

字符类

序号 字符类及描述
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中定义的宏:

序号 宏及描述
1 extern int errno

这是由系统调用和某些库函数在发生错误时设置的宏,以指示发生了什么错误。

2 EDOM 域错误

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

3 ERANGE 范围错误

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

C 库 - <float.h>

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

序号 组件及组件描述
1

S

符号(+/-)

2

b

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

3

e

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

4

p

精度,有效数字中基数b的位数。

基于以上4个组件,浮点数的值如下:

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为十六进制。

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

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

示例

以下示例显示了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 库 - <limits.h>

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

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

库宏

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

描述
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 定义短整型short int的最小值。
SHRT_MAX +32767 定义短整型short int的最大值。
USHRT_MAX 65535 定义无符号短整型unsigned short int的最大值。
INT_MIN -2147483648 定义整型int的最小值。
INT_MAX +2147483647 定义整型int的最大值。
UINT_MAX 4294967295 定义无符号整型unsigned int的最大值。
LONG_MIN -9223372036854775808 定义长整型long int的最小值。
LONG_MAX +9223372036854775807 定义长整型long int的最大值。
ULONG_MAX 18446744073709551615 定义无符号长整型unsigned long int的最大值。

示例

以下示例显示了在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 库 - <locale.h>

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

库宏

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

序号 宏及描述
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)

设置或读取依赖于位置的信息。

库结构

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

以下是每个字段的描述:

序号 字段 & 描述
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,则货币符号出现在正货币值之前。如果等于0,则货币符号出现在正货币值之后。

14

p_sep_by_space

如果等于1,则货币符号与正货币值之间用空格分隔。如果等于0,则货币符号与正货币值之间没有空格。

15

n_cs_precedes

如果等于1,则货币符号出现在负货币值之前。如果等于0,则货币符号出现在负货币值之后。

16

n_sep_by_space

如果等于1,则货币符号与负货币值之间用空格分隔。如果等于0,则货币符号与负货币值之间没有空格。

17

p_sign_posn

表示正货币值中正号的位置。

18

n_sign_posn

表示负货币值中负号的位置。

以下值用于p_sign_posnn_sign_posn

描述
0 括号包含值和货币符号。
1 符号出现在值和货币符号之前。
2 符号出现在值和货币符号之后。
3 符号紧接在值和货币符号之前。
4 符号紧接在值和货币符号之后。

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的反正切值(以弧度为单位),以确定正确的象限。

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 库 - <setjmp.h>

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

库变量

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

序号 变量 & 描述
1

jmp_buf

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

库宏

此库中只定义了一个宏:

序号 宏及描述
1 int setjmp(jmp_buf environment)

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

库函数

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

序号 函数及描述
1 void longjmp(jmp_buf environment, int value)

此函数恢复由程序相同调用中最近一次调用setjmp()宏时保存的环境,并使用相应的jmp_buf参数。

C 库 - <signal.h>

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

库变量

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

序号 变量 & 描述
1

sig_atomic_t

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

库宏

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

序号 宏及描述
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中定义的函数:

序号 函数及描述
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 头文件中定义的变量类型:

序号 变量 & 描述
1

va_list

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

库宏

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

序号 宏及描述
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 库 - <stddef.h>

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

库变量

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

序号 变量 & 描述
1

ptrdiff_t

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

2

size_t

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

3

wchar_t

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

库宏

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

序号 宏及描述
1 NULL

此宏是空指针常量的值。

2 offsetof(type, member-designator)

这将产生一个类型为 size_t 的常数整数,表示结构成员从结构开头处的偏移量(以字节为单位)。成员由member-designator 给出,结构名称在type 中给出。

C 库 - <stdio.h>

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

库变量

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

序号 变量 & 描述
1

size_t

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

2

FILE

这是一种适合存储文件流信息的类对象类型。

3

fpos_t

这是一种适合存储文件中的任何位置的类对象类型。

库宏

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

序号 宏及描述
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_ENDSEEK_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, ...)

将格式化的输出发送到 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)

从指定的流中获取下一个字符(一个无符号 char)并为流推进位置指示符。

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

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

32 int fputc(int char, FILE *stream)

将参数 char 指定的字符(一个无符号 char)写入指定的流并为流推进位置指示符。

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

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

34 int getc(FILE *stream)

从指定的流中获取下一个字符(一个无符号 char)并为流推进位置指示符。

35 int getchar(void)

从 stdin 获取一个字符(一个无符号 char)。

36 char *gets(char *str)

从 stdin 读取一行并将其存储到 str 指向的字符串中。当读取换行符或到达文件末尾时停止,以先发生者为准。

37 int putc(int char, FILE *stream)

将参数 char 指定的字符(一个无符号 char)写入指定的流并为流推进位置指示符。

38 int putchar(int char)

将参数 char 指定的字符(一个无符号 char)写入 stdout。

39 int puts(const char *str)

将字符串写入 stdout,直到但不包括空字符。换行符将附加到输出。

40 int ungetc(int char, FILE *stream)

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

41 void perror(const char *str)

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

C 库 - <stdlib.h>

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

库变量

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

序号 变量 & 描述
1

size_t

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

2

wchar_t

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

3

div_t

这是div 函数返回的结构。

4

ldiv_t

这是ldiv 函数返回的结构。

库宏

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

序号 宏及描述
1

NULL

此宏是空指针常量的值。

2

EXIT_FAILURE

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

3

EXIT_SUCCESS

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

4

RAND_MAX

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

5

MB_CUR_MAX

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

库函数

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

序号 函数及描述
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)

尝试调整之前使用malloccalloc 调用分配的 ptr 指向的内存块的大小。

11 void abort(void)

导致程序异常终止。

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

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

13 void exit(int status)

导致程序正常终止。

14 char *getenv(const char *name)

搜索由name指向的环境字符串,并将关联的值返回到字符串。

15 int system(const char *string)

将由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头文件中定义的变量类型:

序号 变量 & 描述
1

size_t

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

库宏

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

序号 宏及描述
1

NULL

此宏是空指针常量的值。

库函数

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

序号 函数及描述
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)

比较str1str2的前n个字节。

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

将src中的n个字符复制到dest

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

另一个将str2中的n个字符复制到str1的函数。

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

将字符c(一个无符号字符)复制到参数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(一个无符号字符)的第一次出现。

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(char *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头文件中定义的变量类型:

序号 变量 & 描述
1

size_t

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

2

clock_t

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

3

time_t是

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

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             */
};

库宏

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

序号 宏及描述
1

NULL

此宏是空指针常量的值。

2

CLOCKS_PER_SEC

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

库函数

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

序号 函数及描述
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格式。

广告