今天总结一下C语言标准库。
C语言标准库(C89)包含15个头文件,新的C99以及C11又定义了一些其他的库,这里略过不说,常用的如下,
<assert.h> - 包含assert()函数,这个函数现在还有人用吗?至少我这几年没有见人用了,因为它会直接导致进程退出,而且只会记下当前的调用栈,只能发现问题而不能帮助解决问题,在现实中使用日志系统或者直接用标准输出记录问题会帮助更大。
<ctype.h> - 字符测试函数,可能有很多人喜欢自己实现类似islower()或者tolower()的函数,不过这个库里的函数在某些场景真的很有用。不如isalnum()检查是不是字母或者数字,isprint()检查是不是可打印的字符,还有isspace()可以检查是不是白空格。
<errno.h> - 很多库函数或者系统函数会把错误代码写入errno. 记录错误日志时,要检查一下出错的调用是否记录errno。
<math.h> - 数学运算的库,常用的如幂运算pow()和余数运算fmod().
<stdarg.h> - 如果函数中使用了可变参数,需要用这个库来解析这些参数。
<stdio.h> - 这可能是C语言最常用的头文件了吧,定义了一些文件操作的方法,比如打开文件fopen(),和关闭文件fclose(),以及输出格式化字符串printf(), sprintf()和snprintf()。注意snprintf()是C99标准定义的函数,有些老的编译器不支持。
<stdlib.h> - 定义了字符串转换成数字的函数如atof(), atoi(),以及内存分配和释放的函数malloc(), calloc()等。
<string.h> - 定义了字符数组的操作,如strcpy(),strcmp()等。还有内存复制的操作如memcpy(),memmove()等。
还有一些不太常用的头文件,比如<float.h> <limits.h> <setjmp.h> <signal.h> <stddef.h> <locale.h> <time.h>.
网友评论