C语言标准库函数大全

  • Post author:
  • Post category:其他



原文链接

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);

返回有关当前视区的信息



版权声明:本文为yang1fei2原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。