C语言-15个基本的标准函数库
| # C语言-
http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-STDLIBH.html
旧人不复 矢志不渝
|
| —- |
简介
stdlib .h 头文件定义了四个变量类型、一些宏和各种通用工具函数。## 库变量
| | |
| —- | —- |
| | 这是无符号整数类型,它是 sizeof 关键字的结果。 |
| | 这是一个宽字符常量大小的整数类型。 |
| | 这是 div 函数返回的结构。 |
| | 这是 ldiv 函数返回的结构。 |
库宏
|
|
|
这个宏是一个空指针常量的值。 |
|
这是 exit 函数失败时要返回的值。 |
|
这是 exit 函数成功时要返回的值。 |
|
这个宏是 rand 函数返回的最大值。 |
|
这个宏表示在多字节字符集中的最大字符数,不能大于 MB_LEN_MAX。 |
库函数
|
|
|
str |
|
str |
|
str |
|
str |
|
str |
|
str |
|
|
|
calloc、mallocrealloc |
|
|
|
malloccalloc |
|
|
|
func |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RAND_MAX |
|
rand |
|
str |
|
strpwcs |
|
str |
|
pwcsstr |
|
wchar |
| # C语言标准库函数
http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-TIMEH.html
旧人不复 矢志不渝
|
| —- |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-TIMEH.html作者: |
| —- |
| 序号 | 函数 & 描述 |
| —- | —- |
| 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 格式。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-STRINGH.html作者: |
| —- |
| 序号 | 函数 & 描述 |
| —- | —- |
| 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)另一个用于从 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)把 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 中。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-STDIOH.html作者: |
| —- |
| 序号 | 函数 & 描述 |
| —- | —- |
| 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,后跟一个冒号,然后是一个空格。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-STDDEFH.html作者: |
| —- |
## 简介
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语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-STDARGH.html作者: |
| —- |
## 简介
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_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,则结果为未定义。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-SIGNALH.html作者: |
| —- |
## 简介
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 算术运算出错,如除数为 0 或溢出。 |
| 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语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-SETJMPH.html作者: |
| —- |
## 简介
setjmp.h 头文件定义了宏 setjmp()、函数 longjmp() 和变量类型 jmp_buf,该变量类型会绕过正常的函数调用和返回规则。## 库变量
下面列出了头文件 setjmp.h 中定义的变量:| 序号 | 变量 & 描述 |
| —- | —- |
| 1 | jmp_buf 这是一个用于存储宏 setjmp() 和函数 longjmp() 相关信息的数组类型。 |
库宏
下面是这个库中定义的唯一的一个宏:| 序号 | 宏 & 描述 |
| —- | —- |
| 1 | int setjmp(jmp_buf environment)这个宏把当前环境保存在变量 environment 中,以便函数 longjmp() 后续使用。如果这个宏直接从宏调用中返回,则它会返回零,但是如果它从 longjmp() 函数调用中返回,则它会返回一个非零值。 |
库函数
下面是头文件 setjmp.h 中定义的唯一的一个函数:| 序号 | 函数 & 描述 |
| —- | —- |
| 1 | void longjmp(jmp_buf environment, int value)该函数恢复最近一次调用 setjmp() 宏时保存的环境,jmp_buf 参数的设置是由之前调用 setjmp() 生成的。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-MATHH.html作者: |
| —- |
| 序号 | 函数 & 描述 |
| —- | —- |
| 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)](http://www.dba.cn/book/c/CBiaoZhunKu/DOUBLEMODFDOUBLEXDOUBLEINTEGER.html)返回值为小数部分(小数点后的部分),并设置 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语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-LOCALEH.html作者: |
| —- |
## 简介
locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号。接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两个重要的函数。## 库宏
下面列出了头文件 locale.h 中定义的宏,这些宏将在下列的两个函数中使用:| 序号 | 宏 & 描述 |
| —- | —- |
| 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)设置或读取地域化信息。 |
库结构
以下是各字段的描述:| 序号 | 字段 & 描述 |
| —- | —- |
| 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,则 currency_symbol 出现在正货币值之前。如果等于 0,则 currency_symbol 出现在正货币值之后。 |
| 14 | p_sep_by_space如果等于 1,则 currency_symbol 和正货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和正货币值之间不使用空格分隔。 |
| 15 | n_cs_precedes如果等于 1,则 currency_symbol 出现在负货币值之前。如果等于 0,则 currency_symbol 出现在负货币值之后。 |
| 16 | n_sep_by_space如果等于 1,则 currency_symbol 和负货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和负货币值之间不使用空格分隔。 |
| 17 | p_sign_posn表示正货币值中正号的位置。 |
| 18 | n_sign_posn表示负货币值中负号的位置。 |
下面的值用于 p_sign_posn 和 n_sign_posn:| 值 | 描述 |
| —- | —- |
| 0 | 封装值和 currency_symbol 的括号。 |
| 1 | 放置在值和 currency_symbol 之前的符号。 |
| 2 | 放置在值和 currency_symbol 之后的符号。 |
| 3 | 紧挨着放置在值和 currency_symbol 之前的符号。 |
| 4 | 紧挨着放置在值和 currency_symbol 之后的符号。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-LIMITSH.html作者: |
| —- |
## 简介
limit.h头文件决定了各种变量类型的各种属性。在该头文件中的宏限制了各种变量类型(例如char,int和long)的值。这些限制指定了变量不能存储任何超过这些限制的值,例如一个无符号可以存储的替代是255。## 库宏
下面的值是特定实现的,且是通过#define指令来定义的,这些值都不得低于下边所获得的值。| 宏 | 值 | 描述 |
| —- | —- | —- |
| 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 | 定义一个无符号长整型的最大值。 |
实例
下面的实例演示了limit.h文件中定义的一些恒定的使用。——————————————————————————————-让我们编译和运行上面的程序,这将产生以下结果:字节8中的位数SIGNED CHAR的最小值= -128SIGNED CHAR的最大值= 127UNSIGNED CHAR的最大值= 255简短整数的最小值= -32768SHORT INT的最大值= 32767INT的最小值= -32768INT的最大值= 32767CHAR的最小值= -128CHAR的最大值= 127LONG的最小值= -2147483648LONG的最大值= 2147483647
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-FLOATH.html作者: |
| —- |
## 简介
C 标准库的float.h头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量是由 ANSI C 提出的,这让程序更具有可移植性。在讲解这些常量之前,最好先弄清楚浮点数是由下面四个元素组成的:| 组件 | 组件描述 |
| —- | —- |
| S | 符号 ( +/- ) |
| b | 指数表示的基数,2 表示二进制,10 表示十进制,16 表示十六进制,等等… |
| e | 指数,一个介于最小值emin和最大值emax之间的整数。 |
| p | 精度,基数 b 的有效位数 |
基于以上 4 个组成部分,一个浮点数的值如下:floating-point = ( S ) p x be或floating-point = (+/-) precision x baseexponent
## 库宏
下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。请注意,所有的实例 FLT 是指类型 float,DBL 是指类型 double,LDBL 是指类型 long double。| 宏 | 描述 |
| —- | —- |
| FLT_ROUNDS | 定义浮点加法的舍入模式,它可以是下列任何一个值:
- -1 - 无法确定
- 0 - 趋向于零
- 1 - 去最近的值
- 2 - 趋向于正无穷
- 3 - 趋向于负无穷
|
| FLT_RADIX 2 | 这个宏定义了指数表示的基数。基数 2 表示二进制,基数 10 表示十进制,基数 16 表示十六进制。 |
| FLT_MANT_DIGDBL_MANT_DIGLDBL_MANT_DIG | 这些宏定义了 FLT_RADIX 基数中的位数。 |
| FLT_DIG 6DBL_DIG 10LDBL_DIG 10 | 这些宏定义了舍入后不会改变表示的十进制数字的最大值(基数 10)。 |
| FLT_MIN_EXPDBL_MIN_EXPLDBL_MIN_EXP | 这些宏定义了基数为 FLT_RADIX 时的指数的最小负整数值。 |
| FLT_MIN_10_EXP -37DBL_MIN_10_EXP -37LDBL_MIN_10_EXP -37 | 这些宏定义了基数为 10 时的指数的最小负整数值。 |
| FLT_MAX_EXPDBL_MAX_EXPLDBL_MAX_EXP | 这些宏定义了基数为 FLT_RADIX 时的指数的最大整数值。 |
| FLT_MAX_10_EXP +37DBL_MAX_10_EXP +37LDBL_MAX_10_EXP +37 | 这些宏定义了基数为 10 时的指数的最大整数值。 |
| FLT_MAX 1E+37DBL_MAX 1E+37LDBL_MAX 1E+37 | 这些宏定义最大的有限浮点值。 |
| FLT_EPSILON 1E-5DBL_EPSILON 1E-9LDBL_EPSILON 1E-9 | 这些宏定义了可表示的最小有效数字。 |
| FLT_MIN 1E-37DBL_MIN 1E-37LDBL_MIN 1E-37 | 这些宏定义了最小的浮点值。 |
实例
下面的实例演示了 float.h 文件中定义的一些常量的使用。
#include #include
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+38The minimum value of float = 1.1754943508e-38The number of digits in the number = 7.2996655210e-312
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-ERRNOH.html作者: |
| —- |
## 简介
C 标准库的 errno.h 头文件定义了整数变量 errno,它是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。该宏扩展为类型为 int 的可更改的左值,因此它可以被一个程序读取和修改。在程序启动时,errno 设置为零,C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。errno.h 头文件也顶了以一系列表示不同错误代码的宏,这些宏应扩展为类型为 int 的整数常量表达式。## 库宏
下面列出了头文件 errno.h 中定义的宏:| 序号 | 宏 & 描述 |
| :—- | :—- |
| 1 | extern int errno这是通过系统调用设置的宏,在错误事件中的某些库函数表明了什么发生了错误。 |
| 2 | 这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。 |
| 3 | 这个宏表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-CTYPEH.html作者: |
| —- |
| 序号 | 函数 & 描述 |
| —- | —- |
| 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)该函数把小写字母转换为大写字母。 |
| # C语言-
来源网址:http://www.dba.cn/book/c/CBiaoZhunKu/CBiaoZhunKu-ASSERTH.html作者: |
| —- |
## 简介
C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 的一部分。如果已在引用 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:#defineassert(ignore)((void)0)## 库宏
下面列出了头文件 assert.h 中定义的唯一的函数:| 序号 | 函数 & 描述 |
| :—- | :—- |
| 1 | void assert(int expression)这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。 |