math.h
库宏
| 宏 | 
说明 | 
| HUGE_VAL | 
当函数的结果不可以表示为浮点数时。如果是因为结果的幅度太大以致于无法表示,则函数会设置 errno 为 ERANGE 来表示范围错误,并返回一个由宏 HUGE_VAL 或者它的否定(- HUGE_VAL)命名的一个特定的很大的值。如果结果的幅度太小,则会返回零值。在这种情况下,error 可能会被设置为 ERANGE,也有可能不会被设置为 ERANGE。 | 
三角函数
| 函数 | 
说明 | 
| double sin(double angle) | 
返回弧度角 angle 的正弦。 | 
| double cos(double angle) | 
返回弧度角 angle 的余弦。 | 
| double tan(double angle) | 
返回弧度角 angle 的正切。 | 
| double asin(double value) | 
返回以弧度表示的 value 的反正弦。 | 
| double acos(double value) | 
返回以弧度表示的 value 的反余弦。 | 
| double atan(double value) | 
返回以弧度表示的 value 的反正切。 | 
| double atan2(double y, double x) | 
返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。 | 
注意:
sin、cos、tan输入参数的角度都是弧度值。 
asin、acos的参数如果不是-1~1之间,就出现一个定义域错误。 
asin、atan的返回值范围是:-pi/2~pi/2之间的弧度。 
acos的返回值范围是:-pi~pi之间的弧度。 
双曲函数
| 函数 | 
说明 | 
| double sinh(double angle) | 
返回弧度角 angle 的双曲正弦。 | 
| double cosh(double angle) | 
返回弧度角 angle 的双曲余弦。 | 
| double tanh(double angle) | 
返回弧度角 angle 的双曲正切。 | 
对数和指数函数
| 函数 | 
说明 | 
| double exp(double x) | 
返回 e 的 x 次幂的值。 | 
| double log(double x) | 
返回 x 的自然对数(基数为 e 的对数)。 | 
| double log10(double x) | 
返回 x 的常用对数(基数为 10 的对数)。 | 
浮点表示形式
| 函数 | 
说明 | 
| double frexp(double x, int *exponent) | 
把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent,mantissa是函数的返回值。 | 
| double ldexp(double x, int exponent) | 
返回 x 乘以 2 的 exponent 次幂。 | 
| double modf(double x, double *integer) | 
返回值为小数部分(小数点后的部分),并设置 integer 为整数部分。 | 
幂
| 函数 | 
说明 | 
| double pow(double x, double y) | 
返回 x 的 y 次幂。 | 
| double sqrt(double x) | 
返回 x 的平方根。 | 
底数、顶数、绝对值、余数
| 函数 | 
说明 | 
| double ceil(double x) | 
返回大于或等于 x 的最小的整数值。 | 
| double floor(double x) | 
返回小于或等于 x 的最大的整数值。 | 
| double fabs(double x) | 
返回 x 的绝对值。 | 
| double fmod(double x, double y) | 
返回 x 除以 y 的余数。 | 
time.h
库宏
| 宏 | 
说明 | 
| NULL | 
是一个空指针常量的值。 | 
| CLOCKS_PER_SEC | 
表示每秒的处理器时钟个数。 | 
库变量
| 变量 | 
说明 | 
| size_t | 
是无符号整数类型,它是 sizeof 关键字的结果。 | 
| clock_t | 
是一个适合存储处理器时间的类型。 | 
| time_t | 
是一个适合存储日历时间类型。 | 
| struct tm | 
是一个用来保存时间和日期的结构。 | 
tm 结构的定义如下:
struct tm {
   int tm_sec;         /* 秒,范围从 0 到 59        */
   int tm_min;         /* 分,范围从 0 到 59        */
   int tm_hour;        /* 小时,范围从 0 到 23        */
   int tm_mday;        /* 一月中的第几天,范围从 1 到 31    */
   int tm_mon;         /* 月,范围从 0 到 11        */
   int tm_year;        /* 自 1900 年起的年数        */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6    */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365    */
   int tm_isdst;       /* 夏令时                */
};
处理器时间
| 函数 | 
说明 | 
| clock_t clock(void) | 
返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。返回值通常是处理器时钟滴答的次数,为了把这个数值转换成秒,需要除以CLOCKS_PER_SEC。 | 
当天时间
| 函数 | 
说明 | 
| time_t time(time_t *timer) | 
计算当前日历时间,并把它编码成 time_t 格式。 | 
说明:
- 如果参数是非NULL值,时间值也将通过这个这个指针进行存储。
 
- 如果机器无法提供当前的日期和时间,或者时间值太大,无法使用
time_t 变量表示,函数返回-1。 
- 在MS-DOS和UNIX系统中,时刻开始流失的时刻是1970年1月1日00:00:00 。
 
日期和时间转换
| 函数 | 
说明 | 
| char *ctime(const time_t *timer) | 
返回一个表示当地时间的字符串,当地时间是基于参数 timer。 | 
| double difftime(time_t time1, time_t time2) | 
返回 time1 和 time2 之间相差的秒数 (time1-time2)。 | 
| struct tm *gmtime(const time_t *timer) | 
timer 的值被分解为 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。 | 
| struct tm *localtime(const time_t *timer) | 
timer 的值被分解为 tm 结构,并用本地时区表示。 | 
| char *asctime(const struct tm *timeptr) | 
返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。 | 
| size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) | 
根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。 | 
| time_t mktime(struct tm *timeptr) | 
把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。 | 
注意:
| 代码 | 
说明 | 
| %% | 
百分号 | 
| %a | 
星期几的简写 | 
| %A | 
星期几的全称 | 
| %b | 
月份的简写 | 
| %B | 
月份的全称 | 
| %c | 
日期和时间 | 
| %d | 
一个月的第几天(01-31) | 
| %H | 
24小时制的小时(00-23) | 
| %I | 
12小时制的小时(00-12) | 
| %J | 
一年的第几天 | 
| %m | 
月数(01-12) | 
| %M | 
分钟(00-59) | 
| %p | 
本地的AM或PM的等价显示 | 
| %S | 
秒(00-59) | 
| %U | 
一年的第几周,把星期日做为第一天(值从0到53) | 
| %w | 
一星期的第几天,星期日为第0天 | 
| %W | 
一年的地基星期(值从0到53),星期一为第一天 | 
| %x | 
使用本地的日期格式 | 
| %X | 
使用本地的时间格式 | 
| %y | 
当前世纪的年份(00-99) | 
| %Y | 
年份的全写形式 | 
| %Z | 
时区名称,如果不能得到时区名称则返回空字符。 | 
assert.h
| 宏 | 
说明 | 
| void assert(int expression) | 
这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。 | 
说明:
- 如果宏对表达式测试的结果为假,它就向标准错误打印一条诊断信息并终止程序。
 
- 当程序被完整测试完毕之后,可以在编译时通过定义
NDEBUG消除所有的断言。当NDEBUG被定义后,预处理器将丢弃所有的断言,而不必在程序中把所有的断言实际删除。 
ctype.h
| 函数 | 
说明 | 
| int isalnum(int c) | 
该函数检查所传的字符是否是字母和数字。 | 
| int isalpha(int c) | 
该函数检查所传的字符是否是字母。 | 
| int iscntrl(int c) | 
该函数检查所传的字符是否是控制字符。 | 
| int isdigit(int c) | 
该函数检查所传的字符是否是十进制数字。 | 
| int isgraph(int c) | 
该函数检查所传的字符是否有图形表示法。 | 
| int islower(int c) | 
该函数检查所传的字符是否是小写字母。 | 
| int isprint(int c) | 
该函数检查所传的字符是否是可打印的。 | 
| int ispunct(int c) | 
该函数检查所传的字符是否是标点符号字符。 | 
| int isspace(int c) | 
该函数检查所传的字符是否是空白字符。 | 
| int isupper(int c) | 
该函数检查所传的字符是否是大写字母。 | 
| int isxdigit(int c) | 
该函数检查所传的字符是否是十六进制数字。 | 
| int tolower(int c) | 
该函数把大写字母转换为小写字母。 | 
| int toupper(int c) | 
该函数把小写字母转换为大写字母。 | 
说明:
- 图形字符:字母、数字字符和标点符号字符的集合。
 
- 可打印字符:字母、数字字符、标点符号字符和空格字符的集合。
 
- 控制字符:在 ASCII 编码中,这些字符的八进制代码是从 000 到 037,以及 177(DEL)。
 
- 空格字符:制表符、换行符、垂直制表符、换页符、回车符、空格符的集合。
 
- 空白字符:包括空格符和制表符。
 
string.h
库变量
| 变量 | 
说明 | 
| size_t | 
无符号整数类型,它是 sizeof 关键字的结果。 | 
库宏
字符串长度
| 函数 | 
说明 | 
| size_t strlen(const char *str) | 
计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 | 
不受限制的字符串函数
| 函数 | 
说明 | 
| char *strcpy(char *dest, const char *src) | 
把 src 所指向的字符串复制到 dest。 | 
| char *strcat(char *dest, const char *src) | 
把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 | 
| int strcmp(const char *str1, const char *str2) | 
把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 | 
长度受限的字符串函数
| 函数 | 
说明 | 
| char *strncpy(char *dest, const char *src, size_t n) | 
把 src 所指向的字符串复制到 dest,最多复制 n 个字符。 | 
| char *strncat(char *dest, const char *src, size_t n) | 
把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。 | 
| int strncmp(const char *str1, const char *str2, size_t n) | 
把 str1 和 str2 进行比较,最多比较前 n 个字节。 | 
字符串查找
| 函数 | 
说明 | 
| char *strchr(const char *str, int c) | 
在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。 | 
| char *strrchr(const char *str, int c) | 
在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。 | 
| char *strpbrk(const char *str1, const char *str2) | 
检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。 | 
| char *strstr(const char *haystack, const char *needle) | 
在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。 | 
| size_t strspn(const char *str1, const char *str2) | 
检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。 | 
| size_t strcspn(const char *str1, const char *str2) | 
检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。 | 
| char *strtok(char *str, const char *delim) | 
分解字符串 str 为一组字符串,delim 为分隔符。 | 
内存操作
| 函数 | 
说明 | 
| void *memchr(const void *str, int c, size_t n) | 
在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。 | 
| int memcmp(const void *str1, const void *str2, size_t n) | 
把 str1 和 str2 的前 n 个字节进行比较。 | 
| void *memcpy(void *dest, const void *src, size_t n) | 
从 src 复制 n 个字符到 dest。 | 
| void *memmove(void *dest, const void *src, size_t n) | 
另一个用于从 src 复制 n 个字符到 dest 的函数。 | 
| void *memset(void *str, int c, size_t n) | 
复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。 | 
错误信息
| 函数 | 
说明 | 
| char *strerror(int errnum) | 
从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。 | 
其它
| 函数 | 
说明 | 
| int strcoll(const char *str1, const char *str2) | 
把 str1 和 str2 进行比较,结果取决于 LC_COLLATE 的位置设置。 | 
| size_t strxfrm(char *dest, const char *src, size_t n) | 
根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。 |