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); |
返回有关当前视区的信息 |