double atof(const char * nptr); | 返回把字符串nptr开始部分的数字和符号字符转换为double类型的值,跳过开始的空白,遇到第一个非数字字符时结束转换;如果未发现数字则返回0 |
int atoi(const char * nptr); | 返回把字符串nptr开始部分的数字和符号字符转换为int类型的值,跳过开始的空白,遇到第一个非数字字符时结束转换;如果未发现数字则返回0 |
int atol(const char *nptr); | 返回把字符串nptr开始部分的数字和符号字符转换为long类型的值,跳过开始的空白,遇到第一个非数字字符时结束转换;如果未发现数字则返回0 |
double strtod(const char *restrictnpt, char ** restrictept); | 返回把字符串npt开始部分的数字和符号转换为double类型的值,跳过开始的空白遇到第一个非数字字符时结束转换;如果未发现数字则返回0;如果转换成功,则把数字后第一个字符的地址赋给ept指向的位置;如果转换失败,则把npt赋给ept指向的位置 |
float strtof(const char * restrictnpt, char ** restrict ept); | 与strtod()类似,但是该函数把npt指向的字符串转换成long double类型的值(C99) |
long double strtols(const char * restrict npt, char **restrict ept); | 与strod()类似,但是该函数把npt指向的字符串转换成long double类型的值(C99) |
long strtol(const char * restrict npt, char ** restrict ept, int base); | 返回把字符串npt开始部分的数字和符号转换成long类型的值,跳过开始的空白,遇到第一个非数字字符时结束转换;如果未发现数字则返回0;如果转换成功,则把数字后第一个字符的地址赋给ept指向的位置;如果转换失败,则把npt赋给ept指向的位置;假定字符串中的数字以base指定的数为基数 |
long long strtoll(const char *restrictnpt, char ** restrict ept, int base); | 与strtol()类似,但是该函数把npt指向的字符串转换为long long类型的值(C99) |
unsigned long strtoul(const char * restrict npt, char ** restrict ept, int base); | 返回把字符串npt开始部分的数字和符号字符转换为unsigned long 类型的值,跳过开始的空白,遇到第一个非数字字符时结束转换;如果未发现数字则返回0;如果转换成功,则把数字后第一个字符的地址赋给ept指向的位置;如果转换失败,则把npt赋给ept指向的位置;假定字符串中的数字以base指定的数为基数 |
unsigned long long strtoull(const char * restrict npt, char ** restrict ept , int base); | 与strtoul()类似,但是该函数把npt指向的字符串转换为unsigned long long 类型的值(C99) |
int rand(void); | 返回0 - RAND_MAX范围内的一个伪随机整数 |
void srand(unsigned int seed); | 把随机数生成器种子设置为seed,如果在调用rand()之前调用srand(),则种子为1 |
void *aligned_alloc(size_t algn, size_t size); | 为对其对象algn分配size字节的空间,应该支持algn对齐值,size应该是algn的倍数(c11) |
void *calloc(size_t nmem, size_t size); | 为内含nmem个成员的数组分配空间,每个元素占size字节大;空间中的所有位都初始化为0;如果操作成功,该函数返回数组的地址,否则返回NULL |
void free(void *ptr); | 释放ptr指向的空间,ptr应该是之前调用calloc(), malloc()或realloc(0返回的值,或者ptr也可以是空指针,出现这种情况时什么也不做。如果ptr是其他值,其行为是未定义的 |
void *malloc(size_t size); | 分配size字节的未初始化内存块;如果成功分配,该函数返回数组的地址,否则返回NULL |
void *realloc(void *ptr, size_t size); | 把ptr指向的内存块大小改为size字节,size字节内的内存块内容不变。该函数返回块的位置,它可能被移动。如果不能重新分配空间,函数返回NULL,原始块不变;如果ptr为NULL,其行为与调用带size参数的malloc()相同;如果size是0,且ptr不是NULL,其行为与调用带ptr参数的free()相同。 |
void abort(void); | 除非捕获信号SIGABRT,且相应的信号处理器没有返回,否则该函数将导致程序异常结束。是否关闭I/O流和临时文件,因实现而异。该函数执行raise(SIGABRT) |
int atexit(void (*func) (void)); | 注册func指向的函数,使其在程序正常结束时被调用。实现应支持注册至少32个函数,并根据它们注册顺序的逆序调用。如果注册成功,函数返回0;否则返回非0 |
int at_quick_exit(void (*func) (void)); | 注册func指向的函数,如果调用quick_exit()则调用被注册的函数。实现应支持注册至少32个函数,并根据它们注册顺序的逆序调用。如果注册成功,函数返回0;否则返回非0(C11) |
void exit(int status); | 该函数将正常结束程序。首先调用由atexit()注册的函数,然后刷新所有打开的输出流,关闭所有的I/O流,关闭tmpfile()创建的所有文件,并把控制权返回主机环境中;如果status是0或EXIT_SUCCESS,则返回一个实现定义的值,表明未成功结束程序 |
void _Exit(int status); | 与exit()类似,但是该函数不调用atexit()注册的函数和signal()注册的信号处理器,其处理打开流的方式依照实现而异 |
char *getenv(const char * name); | 返回一个指向字符串的指针,该字符串表示name指向的环境变量的值。如果无法匹配指定的name,则返回NULL |
_Noreturn void quick_exit(int status); | 该函数将正常结束程序。不调用atexit()注册的函数和signal()注册的信号处理器。根据at_quick_exit()注册函数的顺序,逆序调用这些函数。如果程序多次调用quick_exit()或者同时调用quick_exit()和exit(),其行为是未定义的。通过调用_Exit(status)将控制权返回主机环境(C11) |
int system(const char *str); | 把str指向的字符串传递给命令处理器执行的主机环境。如果str是NULL指针,且命令处理器可用,则该函数返回非0,否则返回;如果str不是NULL,返回值依实现而异 |
void *bsearch(const void *key, const void *base, size_tnmem, size_t size, int (*comp)(const void *, const void *)); | 查找base指向的一个数组(有nmem个元素,每个元素的大小为size)中是否有元素匹配key指向的对象。通过comp指向的函数比较各项,如果key指向的对象小于数组元素,那么比较函数将返回小于0的值;如果两者相等,则返回0;如果key指向的对象大于数组元素,则返回大于0的值。该函数返回指向匹配元素的指针或NULL(如果无匹配元素)。如果有多个元素匹配,未定义返回哪一个元素 |
void qsort(void *base, size_t nmem, size_t size, int(*comp) (const void *, const void *)); | 根据comp指向的函数所提供的顺序排列base指向的数组。该数组有nmem个元素,每个元素的大小是size。如果第一个参数指向的对象小于数组元素,那么比较函数将返回小于0的值;如果两者相等,则返回0;如果第一个参数指向的对象大于数组元素,则返回大于0的值 |
int abs(int n); | 返回n的绝对值。如果n是负数但没有与之对应的正数,那么返回值是未定义的。当n是以二进制补码表示的INT_MIN时,会出现这种情况 |
div_t div(int number, int denom); | 计算number除以denom的商和余,把商和余数分别存储在div_t结构的quot成员和rem成员中。对于无法整除的除法,商要直接截去小数部分 |
long labs(int n); | 返回n的绝对值,如果n是负数但没有与之对应的正数,那么返回值是未定义的。当n是以二进制补码表示的LONG_MIN时,会出现这种情况 |
ldiv_t ldiv(long number, long denom); | 计算number除以denom的商和余,把商和余数分别存储在ldiv_t结构的quot成员和rem成员中。对于无法整除的除法,商要直接截去小数部分 |
long long llabs(int n); | 返回n的绝对值,如果n是负数但没有与之对应的正数,那么返回值是未定义的。当n是以二进制补码表示的LONG_LONG_MIN时,会出现这种情况 |
lldiv_t lldiv(long number, long denom); | 计算number除以denom的商和余,把商和余数分别存储在lldiv_t结构的quot成员和rem成员中。对于无法整除的除法,商要直接截去小数部分 (C99) |
int mblen(const char *s, size_t n); | 返回组成s指向的多字节字符的字节数(最大为n)。如果s指向空字符,该函数则返回0;如果s未指向多字节字符,则返回-1;如果s是NULL,且多字节根据状态进行编码,该函数则返回非0,否则返回0 |
int mbtowc(wchar_t *pw, const char *s, size_t n); | 如果s不是NULL,该函数确定了组成s指向的多字节字符的字节数(最大为n),并确定字符的wchar_t类型编码。如果pw不是NULL,则把类型编码赋给pw指向的位置。返回值与mblen(s, n)相同
|
int wctomb(char *s, wchar_t wc); | 把wc中的字符代码转换成相应的多字节字符表示,并将其存储在s指向的数组中,除非s是NULL。如果s不是NULL,且如果wc无法转换成相应的有效多字节字符,该函数返回-1;如果wc有效,该函数返回组成多字节的字节数;如果s是NULL,且如果多字节字符根据状态进行编码,该函数返回非0,否则返回0 |
size_t mbstwocs(wchar_t *restrict pwcs, const char *srestrict, size_t n); | 把s指向的多字节字符数组转换成存储在pwcs开始位置的宽字符编码数组中,转换pwcs数组中的n个字符或转换到s数组的空字节停止。如果遇到无效的多字节字符,该函数返回(size_t)(-1); 否则返回已填充的数组元素个数(如果有空字符,不包含空字符) |
size_t wcstombs(char * restricts, const wchart_t *restrict pwcs, size_t n); | 把存储在pwcs指向数组中的宽字符编码序列转换成一个多字节字符序列,并把它拷贝到s指向的位置上,存储n个字节或遇到空字符时停止转换。如果遇到无效的宽字符编码,该函数返回(size_t)(-1), 否则返回已经填充数组的字节数(如果有空字符,不包含空字符) |