C 语言常用的库函数

C 语言常用的库函数

库函数并不是 C 语言的一部分,它是由编译系统根据一般用户的需要编制并提供给用户使用的一组程序。每一种 C 编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。 ANSI C 标准提出了一批建议提供的标准库函数。它包括了目前多数 C 编译系统所提供的库函数,但也有一些是某些 C 编译系统未曾实现的。考虑到通用性,本附录列出 ANSI C 建议的常用库函数。

由于 C 库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不能全部介绍,只从教学需要的角度列出最基本的。读者在编写 C 程序时可根据需要,查阅有关系统的函数使用手册。

1.数学函数

使用数学函数时,应该在源文件中使用预编译命令:

#include <math.h> 或 #include “math.h”

函数名函数原型功能返回值
acosdouble acos(double x);计算 arccos x 的值,其中 -1<=x<=1计算结果
asindouble asin(double x);计算 arcsin x 的值,其中 -1<=x<=1计算结果
atandouble atan(double x);计算 arctan x 的值计算结果
atan2double atan2(double x, double y);计算 arctan x/y 的值计算结果
cosdouble cos(double x);计算 cos x 的值,其中 x 的单位为弧度计算结果
coshdouble cosh(double x);计算 x 的双曲余弦 cosh x 的值计算结果
expdouble exp(double x);求 e x 的值计算结果
fabsdouble fabs(double x);求 x 的绝对值计算结果
floordouble floor(double x);求出不大于 x 的最大整数该整数的双精度实数
fmoddouble fmod(double x, double y);求整除 x/y 的余数返回余数的双精度实数
frexpdouble frexp(double val, int *eptr);把双精度数 val 分解成数字部分 ( 尾数 ) 和以 2 为底的指数,即 val=x*2 n ,n 存放在 eptr 指向的变量中数字部分 x0.5<=x<1
logdouble log(double x);求 lnx 的值计算结果
log10double log10(double x);求 log 10 x 的值计算结果
modfdouble modf(double val, int *iptr);把双精度数 val 分解成数字部分和小数部分,把整数部分存放在 ptr 指向的变量中val 的小数部分
powdouble pow(double x, double y);求 x y 的值计算结果
sindouble sin(double x);求 sin x 的值,其中 x 的单位为弧度计算结果
sinhdouble sinh(double x);计算 x 的双曲正弦函数 sinh x 的值计算结果
sqrtdouble sqrt (double x);计算 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LDWMhivL-1590681770601)(F:%5C%E6%88%91%E7%9A%84%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F%5CTypora%E7%AC%94%E8%AE%B0%E4%B8%93%E5%8C%BA%5Cimage%5Cwps1-1590681577557.png)],其中 x ≥ 0计算结果
tandouble tan(double x);计算 tan x 的值,其中 x 的单位为弧度计算结果
tanhdouble tanh(double x);计算 x 的双曲正切函数 tanh x 的值计算结果

2 .字符函数

在使用字符函数时,应该在源文件中使用预编译命令:

#include <ctype.h> 或 #include “ctype.h”

函数名函数原型功能返回值
isalnumint isalnum(int ch);检查 ch 是否字母或数字是字母或数字返回 1 ,否则返回 0
isalphaint isalpha(int ch);检查 ch 是否字母是字母返回 1 ,否则返回 0
iscntrlint iscntrl(int ch);检查 ch 是否控制字符 ( 其 ASCII 码在 0 和 0xlF 之间 )是控制字符返回 1 ,否则返回 0
isdigitint isdigit(int ch);检查 ch 是否数字是数字返回 1 ,否则返回 0
isgraphint isgraph(int ch);检查 ch 是否是可打印字符 ( 其 ASCII 码在 0x21 和 0x7e 之间 ) ,不包括空格是可打印字符返回 1 ,否则返回 0
islowerint islower(int ch);检查 ch 是否是小写字母 (a ~ z)是小字母返回 1 ,否则返回 0
isprintint isprint(int ch);检查 ch 是否是可打印字符 ( 其 ASCII 码在 0x21 和 0x7e 之间 ) ,不包括空格是可打印字符返回 1 ,否则返回 0
ispunctint ispunct(int ch);检查 ch 是否是标点字符 ( 不包括空格 ) 即除字母、数字和空格以外的所有可打印字符是标点返回 1 ,否则返回 0
isspaceint isspace(int ch);检查 ch 是否空格、跳格符 ( 制表符 ) 或换行符是,返回 1 ,否则返回 0
isupperint isupper(int ch);检查 ch 是否大写字母 (A ~ Z)是大写字母返回 1 ,否则返回 0
isxdigitint isxdigit(int ch);检查 ch 是否一个 16 进制数字( 即 0 ~ 9 ,或 A 到 F , a ~ f)是,返回 1 ,否则返回 0
tolowerint tolower(int ch);将 ch 字符转换为小写字母返回 ch 对应的小写字母
toupperint toupper(int ch);将 ch 字符转换为大写字母返回 ch 对应的大写字母

3 .字符串函数

使用字符串中函数时,应该在源文件中使用预编译命令:

#include <string.h> 或 #include “string.h”

函数名函数原型功能返回值
memchrvoid memchr(void *buf, char ch, unsigned count);在 buf 的前 count 个字符里搜索字符 ch 首次出现的位置返回指向 buf 中 ch 的第一次出现的位置指针。若没有找到 ch ,返回 NULL
memcmpint memcmp(void *buf1, void *buf2, unsigned count);按字典顺序比较由 buf1 和 buf2 指向的数组的前 count 个字符buf1<buf2 ,为负数buf1=buf2 ,返回 0buf1>buf2 ,为正数
memcpyvoid *memcpy(void *to, void *from, unsigned count);将 from 指向的数组中的前 count 个字符拷贝到 to 指向的数组中。 From 和 to 指向的数组不允许重叠返回指向 to 的指针
memovevoid *memove(void *to, void *from, unsigned count);将 from 指向的数组中的前 count 个字符拷贝到 to 指向的数组中。 From 和 to 指向的数组不允许重叠返回指向 to 的指针
memsetvoid *memset(void *buf, char ch, unsigned count);将字符 ch 拷贝到 buf 指向的数组前 count 个字符中。返回 buf
strcatchar *strcat(char *str1, char *str2);把字符 str2 接到 str1 后面,取消原来 str1 最后面的串结束符 “\0”返回 str1
strchrchar *strchr(char *str,int ch);找出 str 指向的字符串中第一次出现字符 ch 的位置返回指向该位置的指针,如找不到,则应返回 NULL
strcmpint *strcmp(char *str1, char *str2);比较字符串 str1 和 str2若 str1<str2 ,为负数若 str1=str2 ,返回 0若 str1>str2 ,为正数
strcpychar *strcpy(char *str1, char *str2);把 str2 指向的字符串拷贝到 str1 中去返回 str1
strlenunsigned intstrlen(char *str);统计字符串 str 中字符的个数 ( 不包括终止符 “\0”)返回字符个数
strncatchar *strncat(char *str1, char *str2, unsigned count);把字符串 str2 指向的字符串中最多 count 个字符连到串 str1 后面,并以 NULL 结尾返回 str1
strncmpint strncmp(char *str1,*str2, unsigned count);比较字符串 str1 和 str2 中至多前 count 个字符若 str1<str2 ,为负数若 str1=str2 ,返回 0若 str1>str2 ,为正数
strncpychar *strncpy(char *str1,*str2, unsigned count);把 str2 指向的字符串中最多前 count 个字符拷贝到串 str1 中去返回 str1
strnsetvoid *setnset(char *buf, char ch, unsigned count);将字符 ch 拷贝到 buf 指向的数组前 count 个字符中。返回 buf
strsetvoid *setset(void *buf, char ch);将 buf 所指向的字符串中的全部字符都变为字符 ch返回 buf
strstrchar *strstr(char *str1,*str2);寻找 str2 指向的字符串在 str1 指向的字符串中首次出现的位置返回 str2 指向的字符串首次出向的地址。否则返回 NULL

4 .输入输出函数

在使用输入输出函数时,应该在源文件中使用预编译命令:

#include <stdio.h> 或 #include “stdio.h”

函数名函数原型功能返回值
clearerrvoid clearer(FILE *fp);清除文件指针错误指示器
closeint close(int fp);关闭文件 ( 非 ANSI 标准 )关闭成功返回 0 ,不成功返回 -1
creatint creat( char * filename, int mode);以 mode 所指定的方式建立文件 ( 非 ANSI 标准 )成功返回正数,否则返回 -1
eofint eof(int fp);判断 fp 所指的文件是否结束文件结束返回 1 ,否则返回 0
fcloseint fclose(FILE *fp);关闭 fp 所指的文件,释放文件缓冲区关闭成功返回 0 ,不成功返回非 0
feofint feof(FILE *fp);检查文件是否结束文件结束返回非 0 ,否则返回 0
ferrorint ferror(FILE *fp);测试 fp 所指的文件是否有错误无错返回 0 ,否则返回非 0
fflushint fflush(FILE *fp);将 fp 所指的文件的全部控制信息和数据存盘存盘正确返回 0 ,否则返回非 0
fgetschar *fgets(char *buf, int n, FILE *fp);从 fp 所指的文件读取一个长度为 (n-1) 的字符串,存入起始地址为 buf 的空间返回地址 buf 。若遇文件结束或出错则返回 EOF
fgetcint fgetc( FILE *fp );从 fp 所指的文件中取得下一个字符返回所得到的字符。出错返回 EOF
fopenFILE *fopen(char *filename, char *mode);以 mode 指定的方式打开名为 filename 的文件成功,则返回一个文件指针,否则返回 0
fprintfint fprintf(FILE *fp, char *format,args, … );把 args 的值以 format 指定的格式输出到 fp 所指的文件中实际输出的字符数
fputcint fputc( char ch, FILE * fp);将字符 ch 输出到 fp 所指的文件中成功则返回该字符,出错返回 EOF
fputsint fputs( char str, FILE * fp);将 str 指定的字符串输出到 fp 所指的文件中成功则返回 0 ,出错返回 EOF
freadint fread(char *pt, unsigned size, unsigned n, FILE *fp);从 fp 所指定文件中读取长度为 size 的 n 个数据项,存到 pt 所指向的内存区返回所读的数据项个数,若文件结束或出错返回 0
fscanfint fscanf(FILE *fp, char *format,args, … );从 fp 指定的文件中按给定的 format 格式将读入的数据送到 args 所指向的内存变量中 (args 是指针 )以输入的数据个数
fseekint fseek(FILE *fp, long offset, int base);将 fp 指定的文件的位置指针移到 base 所指出的位置为基准、以 offset 为位移量的位置返回当前位置,否则返回 -1
ftelllong ftell(FILE *fp);返回 fp 所指定的文件中的读写位置返回文件中的读写位置,否则返回 0
fwriteint fwrite(char *ptr, unsigned size, unsigned n, FILE *fp);把 ptr 所指向的 n*size 个字节输出到 fp 所指向的文件中写到 fp 文件中的数据项的个数
getcint getc(FILE *fp);从 fp 所指向的文件中的读出下一个字符返回读出的字符,若文件出错或结束返回 EOF
getcharint getchar();从标准输入设备中读取下一个字符返回字符,若文件出错或结束返回 -1
getschar *gets(char *str);从标准输入设备中读取字符串存入 str 指向的数组成功返回 str ,否则返回 NULL
openint open(char *filename, int mode);以 mode 指定的方式打开已存在的名为 filename 的文件 ( 非 ANSI 标准 )返回文件号 ( 正数 ) ,如打开失败返回 -1
printfint printf(char *format,args, … );在 format 指定的字符串的控制下,将输出列表 args 的指输出到标准设备输出字符的个数。若出错返回负数
prtcint prtc(int ch, FILE * fp);把一个字符 ch 输出到 fp 所值的文件中输出字符 ch ,若出错返回 EOF
putcharint putchar(char ch);把字符 ch 输出到 fp 标准输出设备返回换行符,若失败返回 EOF
putsint puts(char *str);把 str 指向的字符串输出到标准输出设备,将 “\0” 转换为回车行返回换行符,若失败返回 EOF
putwint putw(int w, FILE *fp);将一个整数 i( 即一个字 ) 写到 fp 所指的文件中 ( 非 ANSI 标准 )返回读出的字符,若文件出错或结束返回 EOF
readint read(int fd, char *buf, unsigned count);从文件号 fp 所指定文件中读 count 个字节到由 buf 知识的缓冲区 ( 非 ANSI 标准 )返回真正读出的字节个数,如文件结束返回 0 ,出错返回 -1
removeint remove(char *fname);删除以 fname 为文件名的文件成功返回 0 ,出错返回 -1
renameint remove(char *oname, char *nname);把 oname 所指的文件名改为由 nname 所指的文件名成功返回 0 ,出错返回 -1
rewindvoid rewind(FILE *fp);将 fp 指定的文件指针置于文件头,并清除文件结束标志和错误标志
scanfint scanf(char *format,args, … );从标准输入设备按 format 指示的格式字符串规定的格式,输入数据给 args 所指示的单元。 args 为指针读入并赋给 args 数据个数。如文件结束返回 EOF ,若出错返回 0
writeint write(int fd, char *buf, unsigned count);丛 buf 指示的缓冲区输出 count 个字符到 fd 所指的文件中 ( 非 ANSI 标准 )返回实际写入的字节数,如出错返回 -1

5 .动态存储分配函数

在使用动态存储分配函数时,应该在源文件中使用预编译命令:

#include <stdlib.h> 或 #include “stdlib.h”

函数名函数原型功能返回值
calllocvoid *calloc(unsigned n, unsigned size);分配 n 个数据项的内存连续空间,每个数据项的大小为 size分配内存单元的起始地址。如不成功,返回 0
freevoid free(void *p);释放 p 所指内存区
mallocvoid *malloc(unsigned size);分配 size 字节的内存区所分配的内存区地址,如内存不够,返回 0
reallocvoid *realloc(void *p, unsigned size);将 p 所指的以分配的内存区的大小改为 size 。 size 可以比原来分配的空间大或小返回指向该内存区的指针。若重新分配失败,返回 NULL

6 .其他函数

有些函数由于不便归入某一类,所以单独列出。使用这些函数时,应该在源文件中使用预编译命令:

#include <stdlib.h> 或 #include “stdlib.h”

函数名函数原型功能返回值
absint abs(int num);计算整数 num 的绝对值返回计算结果
atofdouble atof(char *str);将 str 指向的字符串转换为一个 double 型的值返回双精度计算结果
atoiint atoi(char *str);将 str 指向的字符串转换为一个 int 型的值返回转换结果
atollong atol(char *str);将 str 指向的字符串转换为一个 long 型的值返回转换结果
exitvoid exit(int status);中止程序运行。将 status 的值返回调用的过程
itoachar *itoa(int n, char *str, int radix);将整数 n 的值按照 radix 进制转换为等价的字符串,并将结果存入 str 指向的字符串中返回一个指向 str 的指针
labslong labs(long num);计算 long 型整数 num 的绝对值返回计算结果
ltoachar *ltoa(long n, char *str, int radix);将长整数 n 的值按照 radix 进制转换为等价的字符串,并将结果存入 str 指向的字符串返回一个指向 str 的指针
randint rand();产生 0 到 RAND_MAX 之间的伪随机数。 RAND_MAX 在头文件中定义返回一个伪随机 ( 整 ) 数
randomint random(int num);产生 0 到 num 之间的随机数。返回一个随机 ( 整 ) 数
randomizevoid randomize();初始化随机函数,使用时包括头文件 time.h 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值