标准c库函数头文件列表
<assert.h> | 诊断 |
---|---|
<ctype.h> | 字符检测 |
<errno.h> | 错误检测 |
<float.h> | 系统定义的浮点型界限 |
<limits.h> | 系统定义的整数界限 |
<locale.h> | 区域定义 |
<math.h> | 数学 |
<stjump.h> | 非局部的函数调用 |
<signal.h> | 异常处理和终端信号 |
<stdarg.h> | 可变长度参数处理 |
<stddef.h> | 系统常量 |
<stdio.h> | 输入输出 |
<stdlib.h> | 多种公用 |
<string.h> | 字符串处理 |
<time.h> | 时间与日期 |
绝对值函数
绝对值函数用于将表达式的结果转换为非负数,如下表格:
原型 | 功能 |
---|---|
int abs(int n) | 计算整数n的绝对值 |
long labs(long n) | 计算长整数n的绝对值 |
double fabs(double x) | 计算双精度实数x的绝对值 |
幂函数和开平方函数
函数如下表:
原型 | 功能 |
---|---|
double pow(double x,double y) | 计算双精度实数x的y次幂 |
double sqrt(double x) | 计算双精度实数x的平方根 |
指数函数与对数函数
函数如下表:
原型 | 功能 |
---|---|
double exp(double x) | 计算e的双精度实数x次幂 |
double log(double x) | 计算以e为底的双精度实数x 的对数In(x);其中e=2.71828 |
double log10(double x) | 计算以10为底的双精度实数x 的对数log10(x) |
三角函数
原型 | 功能 |
---|---|
double sin(double x) | 计算双精度实数x的正弦值 |
double cos(double x) | 计算双精度实数x的余弦值 |
double tan(double x) | 计算双精度实数x的正切值 |
double asin(double x) | 计算双精度实数x的反正弦值 |
double acos(double x) | 计算双精度实数x的反余弦值 |
double atan(double x) | 计算双精度实数的反正弦值 |
double sinh(double x) | 计算双精度实数x的双曲正弦值 |
double cosh(double x) | 计算双精度实数x的双曲余弦值 |
double tanh(double x) | 计算双精度实数x的双曲正切值 |
在使用三角函数时:注意从参数的使用范围
asin中的x的定义域为[-1.0,1.0],值域是[-π/2,+π/2];
acos的值域是:[0:π];
atan的值域是:[-π/2,+π/2];
取整函数和取余函数
原型 | 功能 |
---|---|
double ceil(double x) | 计算不小于双精度实数x的最小整数 |
double floor(double x) | 计算不大于双精度实数x的最大整数 |
double fmod(double x,double y) | 计算双精度实数x/y的余数,余数使用x的符号 |
double modf(double x,double *ip) | 把x分解成整数部分和小数部分,x是双精度浮点数,ip是整数部分指针,返回结果是小数部分 |
假设x的值是74.12,则ceil(X) = 75;如果x的值是-74.12,则ceil(X)的值是-74;
字符串处理函数
字符串长度函数:
原型 | 功能 |
---|---|
int strlen(char *d) | 返回字符串d的长度,不包括终止符NULL |
字符串连接函数:
原型 | 功能 |
---|---|
char *strcat(char *d ,char *s) | 把字符串s连接到字符串d的后面,返回字符串d |
char *strncat(char *d ,char *s,int n) | 把字符串中最多n个字符连接到字符串d的后面,返回字符串d |
字符串复制函数:
原型 | 功能 |
---|---|
char *strcpy(char *d,char *s) | 复制字符串s到字符串d,返回字符串d |
char *strncpy(char *d,char *s,int n) | 复制字符串s最多n个字符到字符串d,如果s小于n个字符,用"\n"补上,返回字符串d |
char *memcpy(void *d,void *s,int n) | 从s复制n个字符到d,返回字符串d |
char *memmove(void *d,void *s,int n) | 和memcpy相同,即使d和s部分相同也运行 |
字符串比较函数:
原型 | 功能 |
---|---|
int strcmp(char *d,char *s) | 比较字符串d与字符串s,如果d<s,返回-1;如果d==s,返回0,;如果d>s,返回1; |
int strncmp(char *d,char *s,int n) | 比较字符串d中最多n个字符与字符串s,如果d<s,返回-1;如果d==s,返回0,;如果d>s,返回1; |
int memcmp(void *d,void *s ,int n) | 比较d的n个字符与s,和strcmp的返回值相同 |
字符串查找函数:
字符串查找函数用于一个字符串中查找字符出现的位置
原型 | 功能 |
---|---|
char *strchr(char *d,char *c) | 返回一个指向字符串d中c第一次出现的指针;如果没找到c,则返回指向NULL的指针 |
char *strrchr(char *d,char *c) | 返回一个指向字符串d中c第一次出现的指针;如果没找到c,则返回指向NULL的指针 |
char *strstr(char *d,char *s) | 返回一个指向字符串d中字符s第一次出现的指针;如果没找到s,则返回指向NULL的指针 |
void *memchr(void *d,char c,int n) | 返回一个指向被d所指向的n个字符中c第一次出现的指针;如果没找到c,则返回指向NULL的指针 |
字符填充函数:
原型 | 功能 |
---|---|
void *memset(void *d;char c, int n) | 使用n个字符c填充void*类型变量d |
字符处理函数
字符类型判断函数:
原型 | 功能 |
---|---|
int isalnum(int c) | 如果整数c是文字或数字返回非零,否则返回零 |
int isalpha(int c) | 如果整数c是一个字母返回非零,否则返回零 |
int iscntrl(int c) | 如果整数c是一个控制符返回非零,否则返回零 |
int isdigit(int c) | 如果整数c是一个数字返回非零,否则返回零 |
int isgraph(int c) | 如果整数c是可打印的(排除空格)返回非零,否则返回零 |
int islower(int c) | 如果整数c是小写字母返回非零,否则返回零 |
int isprint(int c) | 如果整数c是可打印的(包括空格)返回非零,否则返回零 |
int ispunct(int c) | 如果整数c是可打印的(除了空格,字母或数字之外)返回非零,否则返回零 |
int isspace(int c) | 如果整数c是一个空格返回非零,否则返回零 |
int isupper(int c) | 如果整数c是大小字母返回非零,否则返回零 |
int isxdigit(int c) | 如果整数c是十六进制数字返回非零,否则返回零 |
字符大小写转换函数:
原型 | 功能 |
---|---|
int tolower(int c) | 转换函数c为小写字母。当c为大写英文字母时,返回对应的小写字母,否则返回原来的值 |
int toupper(int c) | 转换函数c为大写字母。当c为小写英文字母时,返回对应的大写字母,否则返回原来的值 |
转换和存储管理函数
转换函数:
原型 | 功能 |
---|---|
int atoi(string) | 转换一个ASCII字符串为一个整数,在第一个非整型字符处停止 |
double atof(string) | 转换一个ASCII字符串为一个双精度数,在第一个不能被解释为一个双精度数的字符处停止 |
string itoa(int ,char *,int) | 转换一个整数为一个ASCII字符串。为返回的字符串分配的空间必须足够大于被转换的数值 |
存储管理函数:
原型 | 功能 |
---|---|
void *malloc(size_tn) | 为一个大小为n的对象分配存储空间 |
void *calloc(size_n,size_n) | 为n个对象的数组分配存储空间,每个的大小为n,初始化所有被分配的内存为零 |
void *realloc(void *p,size_n) | 重新分配空间的大小为n,内容保存于旧的相同,等于新的大小 |
void free(void *p) | 释放指向的空间 |
随机函数
1.rand():它返回[0:MAX]之间均匀分布的伪随机整数。rand函数不接受参数,默认以1为种子(即起始值),它总是以相同的种子开始,所以形成的伪随机数列也相同,不是真正的随机。
2.srand():使用该函数指定不同的数(无符号整数)为种子
要生成一个[A:B]范围的一个随机整数,可以用下面的表示:
int n = A +rand() %(B-A+1);
日期和时间处理函数
原型 | 功能 |
---|---|
char *asctime(const struct tm *timeptr) | 将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回 |
char *ctime (const time_t *timep) | 将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回 |
struct tm*gmtime(const time_t *timep) | 将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回 |
struct tm *localtime(const time_t *timep) | 将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回,结构tm的定义请参考grntime() |
诊断函数
assert()函数是诊断函数,它的作用是测试一个表达式的值是否为false ,也就是0,并且在条件为false时终止程序,参数的表达式的结果是一个整型数据。assert()函数是在标准函数库<assert.h>头文件中定义的。
例如:
assert(A==B);
当A=B时,表达式结果为1,也就是ture;如果A不等于B,结果就是0,也就是false,然后可根据决定是否终止程序。当程序出现异常时,可以使用abort()函数以非正常方式立即结束应用程序。
命令行参数
int main(int argc ,char *argv[])
这是main函数的一个通常的写法,其中第一个参数,argc是英文argument counter的简写,表示传递给main函数有多少个参数,第二个参数argv[]以字符串数组的形式接受真正的参数。
其他函数
1.exit()函数:表示结束程序,它的返回值将被忽略。它的头文件是"stdlib.h"
原型:void exit(int retval);
2.qsort()函数:包含在头文件"stdlib.h"中,此函数根据给出的比较条件快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort()函数必须自己写一个比较函数。
原型:void qsort(void *base ,int n ,int size , int (*fcmp)(const void * , const void *));