C标准库函数集总结

常用网站

  1. 在线编译:
    https://www.tutorialspoint.com/compile_c_online.php
  2. 头文件参考:
    http://www.cplusplus.com/reference/clibrary/

标准库说明:

C标准库函数集总结_第1张图片

assert.h 错误检查

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

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)
    该函数检查所传的字符是否是十六进制数字。
  12. int tolower(int c)
    该函数把大写字母转换为小写字母。
  13. int toupper(int c)
    该函数把小写字母转换为大写字母。

errno.h 错误定义

errno.h 头文件定义了整数变量 errno,它是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。

  1. extern int errno
    这是通过系统调用设置的宏,在错误事件中的某些库函数表明了什么发生了错误。
  2. EDOM Domain Error
    这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。
  3. ERANGE Range Error
    这个宏表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。

float.h 浮点操作

float.h 头文件包含了一组与浮点值相关的依赖于平台的常量。比如相关取整、精度、舍入模式等等。

  1. FLT_RADIX
    指数表示的基数。基数 2 表示二进制,基数 10 表示十进制,基数 16 表示十六进制。
  2. FLT_MANT_DIG
    FLT_RADIX 基数中的位数

    其它的就不例举了。

limits.h 变量限制

各种变量类型的各种属性。定义在该头文件中的宏限制了各种变量类型(比如 char、int 和 long)的值。
C标准库函数集总结_第2张图片

locale.h 本地化设置

特定地域的设置,比如日期格式和货币符号、分隔符等等。略过了。

math.h 数学工具

各种数学函数和一个宏。
在这个库中所有可用的功能都带有一个 double 类型的参数,且都返回 double 类型的结果。
比如正弦、余弦、正切、反正弦、反余弦、反正切、幂、N次方、对数、平方根、绝对值、余数。

setjmp.h 程序跳转

C标准库函数集总结_第3张图片

这个有意思。它定义了宏 setjmp()、函数 longjmp() 和变量类型 jmp_buf,该变量类型会绕过正常的函数调用和返回规则。
jmp_buf
这是一个用于存储宏 setjmp() 和函数 longjmp() 相关信息的数组类型。
int setjmp(jmp_buf environment)
这个宏把当前环境保存在变量 environment 中,以便函数 longjmp() 后续使用。如果这个宏直接从宏调用中返回,则它会返回零,但是如果它从 longjmp() 函数调用中返回,则它会返回一个非零值。

void longjmp(jmp_buf environment, int value)
该函数恢复最近一次调用 setjmp() 宏时保存的环境,jmp_buf 参数的设置是由之前调用 setjmp() 生成的。

signal.h 信号设置

定义了一个变量类型 sig_atomic_t、两个函数调用和一些宏来处理程序执行期间报告的不同信号。
1 SIGABRT
程序异常终止。
2 SIGFPE
算术运算出错,如除数为 0 或溢出。
3 SIGILL
非法函数映象,如非法指令。
4 SIGINT
中断信号,如 ctrl-C。
5 SIGSEGV
非法访问存储器,如访问不存在的内存单元。
6 SIGTERM
发送给本程序的终止请求信号。

1 void (*signal(int sig, void (*func)(int)))(int)
设置信号处理函数。
2 int raise(int sig)
发出信号。

stdarg.h 可变参数设置

定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。

stddef .h 符号定义

定义了各种变量类型和宏:
ptrdiff_t
有符号整数,指针相减的结果。
size_t
无符号整数, sizeof 关键字的结果。
wchar_t
宽字符常量大小的整数类型。
NULL
空指针常量
offsetof(type, member-designator)
生成一个类型为 size_t 的整型常量,返回结构成员member-designator相对于结构体type开头的字节偏移量。

stdio .h 标准IO函数

这个太基础就不说了,各种IO的宏定义和操作。文件开闭、读写、偏移、输出等等。C语言第一个头文件,hello world都要用的0级基础库。

stdlib .h

这个就是重要嘉宾了,保护了各种通用工具函数。

  1. 字符串处理,比如将字符串转换为整数atoi、小数atof、无符号长整形atoul数等。
  2. 分配和释放内存,调整分配的内存大小等。malloc、calloc、free、realloc。
  3. 程序控制,终止abort、退出exit、退出并执行对应函数atexit等。
  4. 返回环境变量name的值:char *getenv(const char *name)
  5. 执行命令:system;
  6. 二分法查找:bsearch;
  7. 数组排列:qsort
  8. 获取绝对值abs、相除div、播种随机数srand、生成随机数rand;
  9. 多字节字符处理。一般的ascii字符是用一个字节表示的,就是单字节。 特殊字符,非英语的字符(比如汉字等)需要用两个字节表示,就是多字节,也称为宽字符。

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) 比较 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 的函数。
如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。
5 . void *memset(void *str, int c, size_t n) ,str填c值,填n个。不说了。
6 . char *strcat(char *dest, const char *src) 把 src 填写到 dest 后面。
7 . char *strncat(char *dest, const char *src, size_t n) 同上,只填n个字符。
8. char *strchr(const char *str, int c) 搜索第一次出现字符 c的位置
9 int strcmp(const char *str1, const char *str2) 比较两个字符串。
如果返回值 < 0,则表示 str1 小于 str2。
如果返回值 > 0,则表示str1 大于 str2。
如果返回值 = 0,则表示 str1 等于 str2。
10 int strncmp(const char *str1, const char *str2, size_t n) 比较两个字符串前 n 个字节。
11 int strcoll(const char *str1, const char *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里任一字符的位置并返回,若找不到则返回空指针。strpbrk(“adcdefg”,“dj”),返回d。
18 char *strrchr(const char *str, int c)str 中最后一次出现字符 c的位置。
19 size_t strspn(const char *str1, const char *str2) str1 中第一个不在字符串 str2 中出现的字符下标。
比如strspn(abcdefg,abcd) 返回4
20 char *strstr(const char *haystack, const char *needle)
在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。
21 char *strtok(char *str, const char *delim)以delim为标记分割str为数个字符串。
22 size_t strxfrm(char *dest, const char *src, size_t n)
根据 LC_COLLATE 来转换src 的前 n 个字符,放置 dest 中。

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返回标准时间(GMT)表示。
6 struct tm *localtime(const time_t *timer)
根据timer返回本地时间。
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 格式。

你可能感兴趣的:(C++,标准库,stdlib)