//*****************************************//
// STD C 库 //
//*****************************************//

<assert.h>
Macro:
void assert(int expression) //在debug时使用,诊断功能
它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
---------------------------------------------------
宏定义如下:
#define assert(ignore) ((void)0)

<limit.h>
Macro:
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 定义一个无符号短整型的最大值。
INT_MIN -32768 定义一个整型的最小值。
INT_MAX +32767 定义一个整型的最大值。
UINT_MAX 65535 定义一个无符号整型的最大值。
LONG_MIN -2147483648 定义一个长整型的最小值。
LONG_MAX +2147483647 定义一个长整型的最大值。
ULONG_MAX 4294967295 定义一个无符号长整型的最大值。

<locale.h>
Macro:
1 LC_ALL
设置下面的所有选项。
2 LC_COLLATE
影响 strcoll 和 strxfrm 函数。
3 LC_CTYPE
影响所有字符函数。
4 LC_MONETARY
影响 localeconv 函数提供的货币信息。
5 LC_NUMERIC
影响 localeconv 函数提供的小数点格式化和信息。
6 LC_TIME
影响 strftime 函数。

Function:

    序号  函数              &               描述
    1       char *setlocale(int category, const char *locale)   设置或读取地域化信息。
    2       struct lconv *localeconv(void)  设置或读取地域化信息。

struct:
    struct lconv

<math.h>

Function:
    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   double tanh(double x)
        返回 x 的双曲正切。
    10  double exp(double x)
        返回 e 的 x 次幂的值。
    11  double frexp(double x, int *exponent)
        把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent。
    12  double ldexp(double x, int exponent)
        返回 x 乘以 2 的 exponent 次幂。
    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 的余数。

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

变量:
    1   sig_atomic_t
        这是 int 类型,在信号处理程序中作为变量使用。
        它是一个对象的整数类型,该对象可以作为一个原子实体访问,即使存在异步信号时,该对象可以作为一个原子实体访问。
Macro:
    这些宏将在下列两个函数中使用
    SIG_宏 与signal 函数一起使用来定义信号的功能。
        1   SIG_DFL
        默认的信号处理程序。
        2   SIG_ERR
        表示一个信号错误。
        3   SIG_IGN
        忽视信号。
    SIG宏 表示以下各种条件的信号码:
        1   SIGABRT
            程序异常终止。
        2   SIGFPE
            算术运算出错,如除数为 0 或溢出。
        3   SIGILL
            非法函数映象,如非法指令。
        4   SIGINT
            中断信号,如 ctrl-C。
        5   SIGSEGV
            非法访问存储器,如访问不存在的内存单元。
        6   SIGTERM
            发送给本程序的终止请求信号。
Function:
    1   void (*signal(int sig, void (*func)(int)))(int)
        该函数设置一个函数来处理信号,即信号处理程序。
    2   int raise(int sig)
        该函数会促使生成信号 sig。sig 参数与 SIG 宏兼容。

<stdarg.h>
该文件定义了扩展参数”...“
Macro:
va_list
这是一个适用于 va_start()、va_arg() 和 va_end() 这三个宏存储信息的类型。

Macro Function:
    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,则结果为未定义。
        

<stddef.h>
变量:
1 ptrdiff_t
这是有符号整数类型,它是两个指针相减的结果。
2 size_t
这是无符号整数类型,它是 sizeof 关键字的结果。
3 wchar_t
这是一个宽字符常量大小的整数类型。
Macro:
1 NULL
这个宏是一个空指针常量的值。
2 offsetof(type, member-designator)
这会生成一个类型为 size_t 的整型常量,它是一个结构成员相对于结构开头的字节偏移量。
成员是由 member-designator 给定的,结构的名称是在 type 中给定的。

<stdio.h>
变量:
1 size_t
这是无符号整数类型,它是 sizeof 关键字的结果。
2 FILE
这是一个适合存储文件流信息的对象类型。
3 fpos_t
这是一个适合存储文件中任何位置的对象类型。
Macro:
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、stdin 和 stdout
这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。
Function:
1 int fclose(FILE stream)
闭流 stream。刷新所有的缓冲区。
2 void clearerr(FILE
stream)
清除给定流 stream 的文件结束和错误标识符。
3 int feof(FILE stream)
测试给定流 stream 的文件结束标识符。
4 int ferror(FILE
stream)
测试给定流 stream 的错误标识符。
5 int fflush(FILE stream)
刷新流 stream 的输出缓冲区。
6 int fgetpos(FILE
stream, fpos_t pos)
获取流 stream 的当前文件位置,并把它写入到 pos。
7 FILE
fopen(const char filename, const char mode)
使用给定的模式 mode 打开 filename 所指向的文件。
8 size_t fread(void ptr, size_t size, size_t nmemb, FILE stream)
从给定流 stream 读取数据到 ptr 所指向的数组中。
9 FILE freopen(const char filename, const char mode, FILE stream)
把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。
10 int fseek(FILE stream, long int offset, int whence)
设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。
11 int fsetpos(FILE
stream, const fpos_t pos)
设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位置。
12 long int ftell(FILE
stream)
返回给定流 stream 的当前文件位置。
13 size_t fwrite(const void ptr, size_t size, size_t nmemb, FILE stream)
把 ptr 所指向的数组中的数据写入到给定流 stream 中。
14 int remove(const char filename)
删除给定的文件名 filename,以便它不再被访问。
15 int rename(const char
old_filename, const char new_filename)
把 old_filename 所指向的文件名改为 new_filename。
16 void rewind(FILE
stream)
设置文件位置为给定流 stream 的文件的开头。
17 void setbuf(FILE stream, char buffer)
定义流 stream 应如何缓冲。
18 int setvbuf(FILE stream, char buffer, int mode, size_t size)
另一个定义流 stream 应如何缓冲的函数。
19 FILE tmpfile(void)
以二进制更新模式(wb+)创建临时文件。
20 char
tmpnam(char str)
生成并返回一个有效的临时文件名,该文件名之前是不存在的。
21 int fprintf(FILE
stream, const char format, ...)
发送格式化输出到流 stream 中。
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)
使用参数列表发送格式化输出到流 stream 中。
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, ...)
从流 stream 读取格式化输入。
28 int scanf(const char
format, ...)
从标准输入 stdin 读取格式化输入。
29 int sscanf(const char str, const char format, ...)
从字符串读取格式化输入。
30 int fgetc(FILE stream)
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
31 char
fgets(char str, int n, FILE stream)
从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
32 int fputc(int char, FILE stream)
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
33 int fputs(const char
str, FILE stream)
把字符串写入到指定的流 stream 中,但不包括空字符。
34 int getc(FILE
stream)
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
35 int getchar(void)
从标准输入 stdin 获取一个字符(一个无符号字符)。
36 char gets(char str)
从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
37 int putc(int char, FILE stream)
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
38 int putchar(int char)
把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
39 int puts(const char
str)
把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。
40 int ungetc(int char, FILE stream)
把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。
41 void perror(const char
str)
把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。

<stdlib.h>
变量:
1 size_t
这是无符号整数类型,它是 sizeof 关键字的结果。
2 wchar_t
这是一个宽字符常量大小的整数类型。
3 div_t
这是 div 函数返回的结构。
4 ldiv_t
这是 ldiv 函数返回的结构。
Macro:
1 NULL
这个宏是一个空指针常量的值。
2 EXIT_FAILURE
这是 exit 函数失败时要返回的值。
3 EXIT_SUCCESS
这是 exit 函数成功时要返回的值。
4 RAND_MAX
这个宏是 rand 函数返回的最大值。
5 MB_CUR_MAX
这个宏表示在多字节字符集中的最大字符数,不能大于 MB_LEN_MAX。
Function:
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 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)
分子除以分母。
20 long int labs(long int x)
返回 x 的绝对值。
21 ldiv_t ldiv(long int numer, long int 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 所给出的多字节字符的编码。

<string.h>
变量:
1 size_t
这是无符号整数类型,它是 sizeof 关键字的结果。
Macro:
NULL 空指针常量值
Function:
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 和 str2 的前 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)
另一个用于从 src 复制 n 个字符到 dest 的函数。
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)
把 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 所指向的字符串复制到 dest,最多复制 n 个字符。
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 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 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)
根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。

<time.h>
变量:
1 size_t
是无符号整数类型,它是 sizeof 关键字的结果。
2 clock_t
这是一个适合存储处理器时间的类型。
3 time_t is
这是一个适合存储日历时间类型。
4 struct tm
这是一个用来保存时间和日期的结构。
Macro:
1 NULL
这个宏是一个空指针常量的值。
2 CLOCKS_PER_SEC
这个宏表示每秒的处理器时钟个数。

Function:
    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 格式。
02-01 18:00