C语言作为影响力最为深远的语言之一,应用范围非常广泛。在一些对性能要求比较高的领域,C语言依然有不可撼动的地位。但是C语言标准库的函数比较多,很多时候我们要实现某个逻辑功能,不知道调用哪些函数。这时就不得不去查询对应的函数文档,这样比较费时。这里把大家能用到的几乎的所有的C语言库函数以表格的形式列出来,供大家参考。根据功能将C语言标准库函数分为:数学运算、文件和目录操作、事件和日期、进程操作、内存分配、字符串处理、系统函数、类型转换、绘图函数九类。下面以表格的形式分别介绍。
    数学运算
   
主要的函数都定义在main.h文件中
| 函数原型 | 功能 | 
| float fabs(float x); | 求浮点数x的绝对值 | 
| int abs(int x); | 求整数x的绝对值 | 
| float acos(float x); | 求x(弧度表示)的反余弦值 | 
| float asin(float x); | 求x(弧度表示)的反正弦值 | 
| float atan(float x); | 求x(弧度表示)的反正切值 | 
| float atan2(float y, float x); | 求y/x(弧度表示)的反正切值 | 
| float ceil(float x); | 求不小于x的最小整数 | 
| float cos(float x); | 求x(弧度表示)的余弦值 | 
| float cosh(float x); | 求x的双曲余弦值 | 
| float exp(float x); | 求e的x次幂 | 
| float floor(float x); | 求不大于x的最达整数 | 
| float fmod(float x, float y); | 计算x/y的余数 | 
| float frexp(float x, int *exp); | 把浮点数x分解成尾数和指数。 | 
| float ldexp(float x, int exp); | 装载浮点数。 | 
| float modf(float num, float *i); | 将浮点数num分解成整数部分和小数部分 | 
| float hypot(float x, float y); | 对于给定的直角三角形的两个直角边,求其斜边的长度 | 
| float log(float x); | 计算x的自然对数 | 
| float log10(float x); | 计算x的常用对数 | 
| float pow(float x, float y); | 计算x的y次幂 | 
| float pow10(float x); | 计算10的x次幂 | 
| float sin(float x); | 计算x(弧度表示)的正弦值 | 
| float sinh(float x); | 计算x(弧度表示)的双曲正弦值 | 
| float sqrt(float x); | 计算x的平方根 | 
| float tan(float x); | 计算x(弧度表示)的正切值 | 
| float tanh(float x); | 求x的双曲正切值 | 
| double cabs(struct complex z); | 计算复数的绝对值 | 
| char *cgets(char *str); | 从控制台读字符串 | 
| div_t (int number, int denom); | 将两个整数相除, 返回商和余数 | 
| long dostounix(struct date *dateptr, struct time *timeptr); | 转换日期和时间为UNIX时间格式 | 
| void rand(void); | 随机数发生器 | 
| void randomize(void); | 初始化随机数发生器 | 
    文件和目录操作
   
| 函数原型 | 功能 | 
| int chdir(const char *path); | 改变工作目录 | 
| int chmod(const char *filename, int permiss); | 改变文件的访问方式 | 
| int chsize(int handle, long size); | 改变文件大小 | 
| void clearerr(FILE *stream); | 复位错误标志 | 
| int close(int handle); | 关闭文件句柄 | 
| int creat (const char *filename, int permiss); | 创建一个新文件或重写一个已存在的文件 | 
| int creatnew(const char *filename, int attrib); | 创建一个新文件 | 
| int dup(int handle); | 复制一个文件句柄 | 
| int eof(int *handle); | 检测文件结束 | 
| int fclose(FILE *stream); | 关闭一个流 | 
| int fcloseall(void); | 关闭打开流 | 
| FILE *fdopen(int handle, char *type); | 把流与一个文件句柄相接 | 
| int feof(FILE *stream); | 检测流上的文件结束符 | 
| int ferror(FILE *stream); | 检测流上的错误 | 
| int fflush(FILE *stream); | 清除一个流 | 
| int fgetc(FILE *stream); | 从流中读取字符 | 
| int fgetchar(void); | 从流中读取字符 | 
| int fgetpos(FILE *stream); | 取得当前文件的句柄 | 
| char *fgets(char *string, int n, FILE *stream); | 从流中读取一字符串 | 
| long filelength(int handle); | 取文件长度字节数 | 
| int findfirst(char *pathname, struct ffblk *ffblk, int attrib); | 搜索磁盘目录; 取得下一个匹配的findfirst模式的文件 | 
| int flushall(void); | 清除所有缓冲区 | 
| void fnerge(char *path, char *drive, char *dir); | 建立新文件名 | 
| FILE *fopen(char *filename, char *type); | 打开一个文件 | 
| int fprintf(FILE *stream, char *format[, argument,…]); | 传送格式化输出到一个流中 | 
| int fputc(int ch, FILE *stream); | 送一个字符到一个流中 | 
| int fputchar(char ch); | 送一个字符到标准输出流(stdout)中 | 
| int fputs(char *string, FILE *stream); | 送一个字符到一个流中 | 
| int fread(void *ptr, int size, int nitems, FILE *stream); | 从一个流中读数据 | 
| FILE *freopen(char *filename, char *type, FILE *stream); | 替换一个流 | 
| int fscanf(FILE *stream, char *format[,argument…]); | 从一个流中执行格式化输入 | 
| int fseek(FILE *stream, long offset, int fromwhere); | 重定位流上的文件指针 | 
| int fsetpos(FILE *stream, const fpos_t *pos); | 定位流上的文件指针 | 
| int fstat(char *handle, struct stat *buff); | 获取打开文件信息 | 
| long ftell(FILE *stream); | 返回当前文件指针 | 
| int fwrite(void *ptr, int size, int nitems, FILE *stream); | 写内容到流中 | 
| int getcurdir(int drive, char *direc); | 取指定驱动器的当前目录 | 
| char *getcwd(char *buf, int n); | 取当前工作目录 | 
| int getdisk(void); | 取当前磁盘驱动器号 | 
| void getfat(int drive, struct fatinfo *fatblkp); | 取文件分配表信息 | 
| int lock(int handle, long offset, long length); | 设置文件共享锁 | 
| long lseek(int handle, long offset, int fromwhere); | 移动文件读/写指针 | 
| int mkdir(char *pathname); | 建立一个目录 | 
| int read(int handle, void *buf, int nbyte); | 从文件中读 | 
| int remove(char *filename); | 删除一个文件 | 
| int rename(char *oldname, char *newname); | 重命名文件 | 
| int write(int handel, void *buf, int nbyte); | 写到一文件中 | 
| int vfprintf(FILE *stream, char *format, va_list param); | 送格式化输出到一流中 | 
| int vfscanf(FILE *stream, char *format, va_list param); | 从流中执行格式化输入 | 
| int vprintf(char *format, va_list param); | 送格式化输出到stdout中 | 
| int vscanf(char *format, va_list param); | 从stdin中执行格式化输入 | 
| int vsprintf(char *string, char *format, va_list param); | 送格式化输出到串中 | 
| int vsscanf(char *s, char *format, va_list param); | 从流中执行格式化输入 | 
| int unlock(int handle, long offset, long length); | 解除文件共享锁 | 
| long tell(int handle); | 取文件指针的当前位置 | 
| FILE *tmpfile(void); | 以二进制方式打开暂存文件 | 
| int setmode(int handle, unsigned mode); | 设置打开文件方式 | 
| int sopen(char *pathname, int access, int shflag, int permiss); | 打开一共享文件 | 
    事件和日期
   
| 函数原型 | 功能 | 
| clock_t clock(void); | 确定处理器时间 | 
| double difftime(time_t time2, time_t time1); | 计算两个时刻之间的时间差 | 
| void getdate(struct *dateblk); | 取DOS日期 | 
| int getftime(int handle, struct ftime *ftimep); | 取文件日期和时间 | 
| void gettime(struct time *timep); | 取得系统时间 | 
| struct tm *gmtime(long *clock); | 把日期和时间转换为格林尼治标准时间(GMT) | 
| struct tm *localtime(long *clock); | 把日期和时间转变为结构 | 
| void tzset(void); | UNIX时间兼容函数 | 
| logn time(long *tloc); | 取一天的时间 | 
| void settime(struct time *timep); | 设置系统时间 | 
| int setftime(int handle, struct ftime *ftimep); | 设置文件日期和时间 | 
    进程操作
   
| 函数原型 | 功能 | 
| int execl(char *pathname, char *arg0, arg1, …, argn, NULL); | 装入并运行其它程序的函数 | 
| int raise(int sig); | 向正在执行的程序发送一个信号 | 
| void exit(int retval); | 结束程序 | 
| void abort(void); | 异常终止一个进程 | 
    内存分配
   
主要的函数都定义在alloc.h文件中
| 函数原型 | 功能 | 
| void *malloc(unsigned int num_bytes); | 分配长度为num_bytes字节的内存 | 
| void *calloc(int num_elems, int elem_size); | 为具有num_elems个长度为elem_size元素的数组分配内存 | 
| void *realloc(void *mem_address, unsigned int newsize); | 改变mem_address所指内存区域的大小为newsize长度 | 
| void free(void *p); | 释放指针p所指向的的内存空间 | 
| void far *farcalloc(unsigned long units, unsigned ling unitsz); long farcoreleft(void); void farfree(void); void far *farmalloc(unsigned long size); void far *farrealloc(void far *block, unsigned long newsize); | 对远堆内存进行操作 | 
    字符串处理
   
主要的函数都定义在string.h文件中
| 函数原型 | 功能 | 
| int bcmp(const void *s1, const void *s2, int n); | 比较字符串s1和s2的前n个字节是否相等,相同返回0否则返回非0,不检查空指针 | 
| void bzero(void *s, int n); | 置字节字符串s的前n个字节为零 | 
| void bcopy(const void *src, void *dest, int n); | 将字符串src的前n个字节复制到dest中,bcopy不检查字符串中的空字节NULL,函数没有返回值 | 
| void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count); | 由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制,返回指向字符ch后的第一个字符的指针,如果src前n个字节中不存在ch则返回NULL | 
| void *memcpy(void *dest, void *src, unsigned int count); | 由src所指内存区域复制count个字节到dest所指内存区域 | 
| void *memchr(void *buf, char ch, unsigned count); | 从buf所指内存区域的前count个字节查找字符ch | 
| int memcmp(void *buf1, void *buf2, unsigned int count); | 比较内存区域buf1和buf2的前count个字节, 当buf1 当buf1=buf2时,返回值=0 当buf1>buf2时,返回值>0 | 
| int memicmp(void *buf1, void *buf2, unsigned int count); | 比较内存区域buf1和buf2的前count个字节但不区分字母的大小写 | 
| void *memmove(void *dest, const void *src, unsigned int count); | 由src所指内存区域复制count个字节到dest所指内存区域 | 
| void *memset(void *buffer, int c, int count); | 把buffer所指内存区域的前count个字节设置成字符 | 
| void setmem(void *buf, unsigned int count, char ch) | 把buf所指内存区域前count个字节设置成字符ch | 
| void movmem(void *src, void *dest, unsigned int count); | 由src所指内存区域复制count个字节到dest所指内存区域 | 
| char *stpcpy(char *dest,char *src); | 把src所指由NULL结束的字符串复制到dest所指的数组中src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest结尾处字符(NULL)的指针。 | 
| char *strcpy(char *dest,char *src); | 把src所指由NULL结束的字符串复制到dest所指的数组中,src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 | 
| char *strcat(char *dest,char *src); | 把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0′)并添加’\0′ | 
| char *strchr(char *s,char c); | 查找字符串s中首次出现字符c的位置返回首次出现c的位置的指针,如果s中不存在c则返回NULL | 
| int strcmp(char *s1,char * s2); | 当s1 当s1=s2时,返回值=0 当s1>s2时,返回值>0 | 
| int stricmp(char *s1,char * s2); | 比较字符串s1和s2,但不区分字母的大小写 | 
| int strcspn(char *s1,char *s2); | 在字符串s1中搜寻s2中所出现的字符 | 
| char *strdup(char *s); | 复制字符串s | 
| int strlen(char *s); | 计算字符串s的长度 | 
| char *strlwr(char *s); | 将字符串s转换为小写形式 | 
| char *strupr(char *s); | 将字符串s转换为大写形式 | 
| char *strncat(char *dest,char *src,int n); | 把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的’\0′)并添加’\0′ | 
| int strcmp(char *s1,char * s2,int n) | 比较字符串s1和s2的前n个字符。 | 
| int strnicmp(char *s1,char * s2,int n); | 比较字符串s1和s2的前n个字符但不区分大小写 | 
| extern char *strncpy(char *dest, char *src, int n); | 把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组 | 
| char *strpbrk(char *s1, char *s2); | 在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,空字符NULL不包括在内 | 
| char *strrev(char *s); | 把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)。 | 
| char *strset(char *s, char c); | 把字符串s中的所有字符都设置成字符c | 
| char *strstr(char *haystack, char *needle); | 从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 | 
| char *strtok(char *s, char *delim); | 分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。 | 
| char *gcvt(double value, int ndigit, char *buf); | 把浮点数转换成字符串 | 
    系统函数
   
主要的函数都定义在system.h文件中
| 函数原型 | 功能 | 
| void clrscr(void); void ClearScreen(void); | 清屏 | 
| void TextOut(int x, int y, char *str, int mode); | 在屏幕上指定位置输出字符串 | 
| void block(int left, int top, int right, int bottom, int mode); | 在屏幕上画一矩形并填充 | 
| void cursor(int mode); | 设定光标形态 | 
| void delay(unsigned int msec); | 短暂延时 | 
| void sleep(unsigned int sec); | 短暂延时 | 
| void textmode(int mode); | 设定屏幕模式 | 
| void get_eng_font(char ch, char *buf, int mode); | 取英文字符的点阵 | 
| void get_chi_font(char *str, char *buf); | 获取中文字符的点阵 | 
| int getkey(void); | 功能同getchar | 
| int getpixel(int x, int y); | 返回屏幕上指定点的状态 | 
| void putpixel(int x, int y, int mode); | 在屏幕的指定位置上画点 | 
| void gotoxy(int x, int y); void gotoxy(int x, int y); | 将光标移动到指定位置 | 
| void line(int left, int top, int right, int bottom, int mode); | 在屏幕上画直线 | 
| void TextOut(int x, int y, char *str, int mode); | 在屏幕上指定位置输出字符串 | 
| char *pyfc(char *str); | 给定一个汉字str,查询对应的拼音 | 
| void rectangle(int left, int top, int right, int bottom, int mode); | 在屏幕上画一矩形。 | 
| int time(struct tm *pTime); | 取得系统时间 | 
| void write_chi_font(int x,int y,char *buf); | 写汉字点阵 | 
| void write_eng_font(int x,int y,char *buf,int mode); | 写英文字符的点阵 | 
| void SetDispBar(int sum, int cur); | 显示滚动条 | 
| int kbhit(void); | 检测按键检测键盘是否有键按下。如果有键按下,则返回对应键值;否则返回零。kbhit不等待键盘按键。无论有无按键都会立即返回。 | 
| int getchar(void); | 从键盘上读取一个键,并返回该键的键值 | 
| void putchar(char c); | 在屏幕上显示字符c | 
| void printf(const char *format,…); | format指定输出格式,后面跟要输出的变量 目前printf支持以下格式: %c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% 一个格式说明可以带有几个修饰符,用来指定显示宽度,小数尾书及左对齐 | 
| int access(const char *filename, int amode); | 确定文件的访问权限 | 
| int atexit(atexit_t func); | 注册终止函数 | 
    类型转换
   
主要的函数都声明在ctyoe.h文件中
| 函数原型 | 功能 | 
| int iscntrl(int c); | 判断字符c是否为控制字符当c在0x00-0x1F之间或等于0x7F(DEL)时,返回非零值,否则返回零 | 
| int isalnum(int c); | 判断字符c是否为字母或数字 | 
| int isalpha(int c); | 判断字符c是否为英文字母 | 
| int isascii(int c); | 判断字符c是否为ascii码 | 
| int isblank(int c); | 判断字符c是否为TAB或空格 | 
| 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 toascii(int c); | 将字符c转换为ascii码 | 
| int tolower(int c); | 将字符c转换为小写英文字母 | 
| int toupper(int c); | 将字符c转换为大写英文字母 | 
| double atof(const char *nptr); | 把字符串转换成浮点数 | 
| int atoi(const char *nptr); | 把字符串转换成长整型数 | 
| long atol(const char *nptr); | 把字符串转换成长整型数 | 
| char ecvt(double value, int ndigit, int *decpt, int *sign); | 把一个浮点数转换为字符串 | 
| char *itoa(int i); | 把整数i转换成字符串 | 
    画图函数
   
| 函数原型 | 功能 | 
| void far bar(int left, int top, int right, int bottom); | 画一个二维条形图 | 
| void far bar3d(int left, int top, int right, int bottom, int depth, int topflag); | 画一个三维条形图 | 
| int bioscom(int cmd, char abyte, int port); | 串行I/O通信 | 
| int bioskey(int cmd); | 直接使用BIOS服务的键盘接口 | 
| int biosprint(int cmd, int byte, int port); | 直接使用BIOS服务的打印机I/O | 
| long biostime(int cmd, long newtime); | 读取或设置BIOS时间 | 
| void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *)); | 二分法搜索 | 
| void far circle(int x, int y, int radius); | 在给定半径以(x, y)为圆心画圆 | 
| void far cleardevice(void); | 清除图形屏幕 | 
| void far closegraph(void); | 关闭图形系统 | 
| void clreol(void); | 在文本窗口中清除字符到行末 | 
| void clrscr(void); | 清除文本模式窗口 | 
| struct COUNTRY *country(int countrycode, struct country *country); | 返回与国家有关的信息 | 
| int cprintf(const char *format[, argument, …]); | 送格式化输出至屏幕 | 
| void cputs(const char *string); | 写字符到屏幕 | 
| int cscanf(char *format[,argument, …]); | 从控制台执行格式化输入 | 
| char *ctime(const time_t *time); | 把日期和时间转换为字符串 | 
| void ctrlbrk(*fptr)(void); | 设置Ctrl-Break处理程序 | 
| void far detectgraph(int far *graphdriver, int far *graphmode); | 通过检测硬件确定图形驱动程序和模式 | 
| void far drawpoly(int numpoints, int far *polypoints); | 画多边形 | 
| void far ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); | 画一椭圆 | 
| void far fillellipse(int x, int y, int xradius, int yradius); | 画出并填充一椭圆 | 
| void far fillpoly(int numpoints, int far *polypoints); | 画并填充一个多边形 | 
| void far floodfill(int x, int y, int border); | 填充一个有界区域 | 
| int far getbkcolor(void); | 返回当前背景颜色 | 
| int far getcolor(void); | 返回当前画线颜色 | 
| int far getmaxx(void); int far getmaxy(void); | 返回屏幕的最大x坐标 | 
| void gettextinfo(struct text_info *inforec); | 取得文本模式的显示信息 | 
| int far getpixel(int x, int y); | 取得指定像素的颜色 | 
| void far getviewsettings(struct viewporttype far *viewport); | 返回有关当前视区的信息 | 
 
