大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
库函数并不是C语言的一部分,它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSIC标准提出了一批建议提供的标准库函数。它包括了目前多数C编译系统所提供的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本书列出Turbo C 2.0版提供的部分常用库函数。
在阳泉等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、做网站、外贸营销网站建设 网站设计制作定制网站,公司网站建设,企业网站建设,高端网站设计,成都营销网站建设,成都外贸网站建设公司,阳泉网站建设费用合理。
由于Turbo C库函数的种类和数目很多(例如:还有屏幕和图形函数、时间日期函数、与本系统有关的函数等,每一类函数又包括各种功能的函数),限于篇幅,本附录不能全部介绍,只从教学需要的角度列出最基本的。读者在编制c程序时可能要用到更多的函数,请查阅有关的Turbo C库函数手册。
(1)数学函数
使用数学函数时,应该在源文件中使用命令:
#include″math.h″
函数名 函数与形参类型 功 能 返回值
acos double acos(x)
double x 计算cos-1(x)的值
-1=x=1 计算结果
asin double asin(x)
double x 计算sin-1(x)的值
-1=x=1 计算结果
atan double atan(x)
double x 计算tan-1(x)的值 计算结果
atan2 double atan2(x,y)
double x,y 计算tan-1(x/y)的值 计算结果
cos double cos(x)
double x 计算cos(x)的值
x的单位为弧度 计算结果
cosh double cosh(x)
double x 计算x的双曲余弦cosh(x)的值 计算结果
exp double exp(x)
double x 求ex的值 计算结果
fabs double fabs(x)
double x 求x的绝对值 计算结果
floor double floor(x)
double x 求出不大于x的最大整数 该整数的双精度实数
fmod double fmod(x,y)
double x,y 求整除x/y的余数 返回余数的双精度实数
frexp double frexp(val,eptr)
double val
int *eptr 把双精度数val分解成数字部分(尾数)和以2为底的指数,即val=x*2n,n存放在eptr指向的变量中 数字部分x
0.5=x1
log double log(x)
double x 求logex即lnx 计算结果
log10 double log10(x)
double x 求log10x 计算结果
modf double modf(val,iptr)
double val
int *iptr 把双精度数val分解成数字部分和小数部分,把整数部分存放在ptr指向的变量中 val的小数部分
pow double pow(x,y)
double x,y 求xy的值 计算结果
sin double sin(x)
double x 求sin(x)的值
x的单位为弧度 计算结果
sinh double sinh(x)
double x 计算x的双曲正弦函数sinh(x)的值 计算结果
sqrt double sqrt (x)
double x 计算√x,x≧0 计算结果
tan double tan(x)
double x 计算tan(x)的值
x的单位为弧度 计算结果
tanh double tanh(x)
double x 计算x的双曲正切函数tanh(x)的值 计算结果
------------------------------------------------------------------------------------------------------------------------------
(2)字符函数
在使用字符函数时,因该在源文件中使用命令:
#include“ctype.h”
函数名 函数和形参类型 功能 返回值
isalnum int isalnum(ch)
int ch 检查ch是否字母或数字 是字母或数字返回1;否则返回0
isalpha int isalpha(ch)
int ch 检查ch是否字母 是字母返回1;否则返回0
iscntrl int iscntrl(ch)
int ch 检查ch是否控制字符(其ASCⅡ码在0和0xlF之间) 是控制字符返回1;否则返回0
isdigit int isdigit(ch)
int ch 检查ch是否数字 是数字返回1;否则返回0
isgraph int isgraph(ch)
int ch 检查ch是否是可打印字符(其ASCⅡ码在0x21和0x7e之间),不包括空格 是可打印字符返回1;否则返回0
islower int islower(ch)
int ch 检查ch是否是小写字母
(a~z) 是小字母返回1;否则返回0
isprint int isprint(ch)
int ch 检查ch是否是可打印字符(其ASCⅡ码在0x21和0x7e之间),不包括空格 是可打印字符返回1;否则返回0
ispunct int ispunct(ch)
int ch 检查ch是否是标点字符(不包括空格)即除字母、数字和空格以外的所有可打印字符 是标点返回1;否则返回0
isspace int isspace(ch)
int ch 检查ch是否空格、跳格符(制表符)或换行符 是,返回1;否则返回0
issupper int isalsupper(ch)
int ch 检查ch是否大写字母
(A~Z) 是大写字母返回1;否则返回0
isxdigit int isxdigit(ch)
int ch 检查ch是否一个16进制数字
(即0~9,或A到F,a~f) 是,返回1;否则返回0
tolower int tolower(ch)
int ch 将ch字符转换为小写字母 返回ch对应的小写字母
toupper int toupper(ch)
int ch 将ch字符转换为大写字母 返回ch对应的大写字母
-----------------------------------------------------------------------------------------------------------------------
(3)字符串函数
使用字符串中函数时,应该在源文件中使用命令:
#include“string.h”
函数名 函数和形参类型 功能 返回值
memchr void memchr(buf,ch,count)
void *buf;charch;
unsigned int count; 在buf的前count个字符里搜索字符ch首次出现的位置 返回指向buf中ch的第一次出现的位置指针;若没有找到ch,返回NULL
memcmp int memcmp(buf1,buf2,count)
void *buf1,*buf2;
unsigned int count; 按字典顺序比较由buf1和buf2指向的数组的前count个字符 buf1buf2,为负数
buf1=buf2,返回0
buf1buf2,为正数
memcpy void *memcpy(to,from,count)
void *to,*from;
unsigned int count; 将from指向的数组中的前count个字符拷贝到to指向的数组中。From和to指向的数组不允许重叠 返回指向to的指针
memove void *memove(to,from,count)
void *to,*from;
unsigned int count; 将from指向的数组中的前count个字符拷贝到to指向的数组中。From和to指向的数组不允许重叠 返回指向to的指针
memset void *memset(buf,ch,count)
void *buf;char ch;
unsigned int count; 将字符ch拷贝到buf指向的数组前count个字符中。 返回buf
strcat char *strcat(str1,str2)
char *str1,*str2; 把字符str2接到str1后面,取消原来str1最后面的串结束符`\0` 返回str1
strchr char *strchr(str1,ch)
char *str;
int ch; 找出str指向的字符串中第一次出现字符ch的位置 返回指向该位置的指针,如找不到,则应返回NULL
strcmp int *strcmp(str1,str2)
char *str1,*str2; 比较字符串str1和str2 str1str2,为负数
str1=str2,返回0
str1str2,为正数
strcpy char *strcpy(str1,str2)
char *str1,*str2; 把str2指向的字符串拷贝到str1中去 返回str1
strlen unsigned intstrlen(str)
char *str; 统计字符串str中字符的个数(不包括终止符`\0`) 返回字符个数
strncat char *strncat(str1,str2,count)
char *str1,*str2;
unsigned int count; 把字符串str2指向的字符串中最多count个字符连到串str1后面,并以null结尾 返回str1
strncmp int strncmp(str1,str2,count)
char *str1,*str2;
unsigned int count; 比较字符串str1和str2中至多前count个字符 str1str2,为负数
str1=str2,返回0
str1str2,为正数
strncpy char *strncpy(str1,str2,count)
char *str1,*str2;
unsigned int count; 把str2指向的字符串中最多前count个字符拷贝到串str1中去 返回str1
strnset void *setnset(buf,ch,count)
char *buf;char ch;
unsigned int count; 将字符ch拷贝到buf指向的数组前count个字符中。 返回buf
strset void *setnset(buf,ch)
void *buf;char ch; 将buf所指向的字符串中的全部字符都变为字符ch 返回buf
strstr char *strstr(str1,str2)
char *str1,*str2; 寻找str2指向的字符串在str1指向的字符串中首次出现的位置 返回str2指向的字符串首次出向的地址。否则返回NULL
-----------------------------------------------------------------------------------------------------------------------------
(4)输入输出函数
在使用输入输出函数时,应该在源文件中使用命令:
#include“stdio.h”
函数名 函数和形参类型 功能 返回值
clearerr void clearer(fp)
FILE *fp 清除文件指针错误指示器 无
close int close(fp)
int fp 关闭文件(非ANSI标准) 关闭成功返回0,不成功返回-1
creat int creat(filename,mode)
char *filename;
int mode 以mode所指定的方式建立文件。(非ANSI标准) 成功返回正数,
否则返回-1
eof int eof(fp)
int fp 判断fp所指的文件是否结束 文件结束返回1,
否则返回0
fclose int fclose(fp)
FILE *fp 关闭fp所指的文件,释放文件缓冲区 关闭成功返回0,不成功返回非0
feof int feof(fp)
FILE *fp 检查文件是否结束 文件结束返回非0,否则返回0
ferror int ferror(fp)
FILE *fp 测试fp所指的文件是否有错误 无错返回0;
否则返回非0
fflush int fflush(fp)
FILE *fp 将fp所指的文件的全部控制信息和数据存盘 存盘正确返回0;
否则返回非0
fgets char *fgets(buf,n,fp) char *buf;int n;
FILE *fp 从fp所指的文件读取一个长度为(n-1)的字符串,存入起始地址为buf的空间 返回地址buf;若遇文件结束或出错则返回EOF
fgetc int fgetc(fp)
FILE *fp 从fp所指的文件中取得下一个字符 返回所得到的字符;出错返回EOF
fopen FILE *fopen(filename,mode)
char *filename,*mode 以mode指定的方式打开名为filename的文件 成功,则返回一个文件指针;否则返回0
fprintf int fprintf(fp,format,args,…)
FILE *fp;char *format 把args的值以format指定的格式输出到fp所指的文件中 实际输出的字符数
fputc int fputc(ch,fp)
char ch;FILE *fp 将字符ch输出到fp所指的文件中 成功则返回该字符;出错返回EOF
fputs int fputs(str,fp)
char str;FILE *fp 将str指定的字符串输出到fp所指的文件中 成功则返回0;出错返回EOF
fread int fread(pt,size,n,fp) char *pt;unsigned size,n;FILE *fp 从fp所指定文件中读取长度为size的n个数据项,存到pt所指向的内存区 返回所读的数据项个数,若文件结束或出错返回0
fscanf int fscanf(fp,format,args,…)
FILE *fp;char *format 从fp指定的文件中按给定的format格式将读入的数据送到args所指向的内存变量中(args是指针) 以输入的数据个数
fseek int fseek(fp,offset,base)
FILE *fp;long offset;int base 将fp指定的文件的位置指针移到base所指出的位置为基准、以offset为位移量的位置 返回当前位置;否则,返回-1
siell FILE *fp;
long ftell(fp); 返回fp所指定的文件中的读写位置 返回文件中的读写位置;否则,返回0
fwrite int fwrite(ptr,size,n,fp) char *ptr;unsigned size,n;FILE *fp 把ptr所指向的n*size个字节输出到fp所指向的文件中 写到fp文件中的数据项的个数
getc int getc(fp)
FILE *fp; 从fp所指向的文件中的读出下一个字符 返回读出的字符;若文件出错或结束返回EOF
getchar int getchat() 从标准输入设备中读取下一个字符 返回字符;若文件出错或结束返回-1
gets char *gets(str)
char *str 从标准输入设备中读取字符串存入str指向的数组 成功返回str,否则返回NULL
open int open(filename,mode) char *filename;
int mode 以mode指定的方式打开已存在的名为filename的文件
(非ANSI标准) 返回文件号(正数);如打开失败返回-1
printf int printf(format,args,
…)
char *format 在format指定的字符串的控制下,将输出列表args的指输出到标准设备 输出字符的个数;若出错返回负数
prtc int prtc(ch,fp)
int ch;FILE *fp; 把一个字符ch输出到fp所值的文件中 输出字符ch;若出错返回EOF
putchar int putchar(ch)
char ch; 把字符ch输出到fp标准输出设备 返回换行符;若失败返回EOF
puts int puts(str)
char *str; 把str指向的字符串输出到标准输出设备;将`\0`转换为回车行 返回换行符;若失败返回EOF
putw int putw(w,fp)
int i;
FILE *fp; 将一个整数i(即一个字)写到fp所指的文件中
(非ANSI标准) 返回读出的字符;若文件出错或结束返回EOF
read int read(fd,buf,count) int fd;char *buf;
unsigned int count; 从文件号fp所指定文件中读count个字节到由buf知识的缓冲区(非ANSI标准) 返回真正读出的字节个数,如文件结束返回0,出错返回-1
remove int remove(fname)
char *fname; 删除以fname为文件名的文件 成功返回0;出错返回-1
rename int remove(oname,nname)
char *oname,*nname; 把oname所指的文件名改为由nname所指的文件名 成功返回0;出错返回-1
rewind void rewind(fp)
FILE *fp; 将fp指定的文件指针置于文件头,并清除文件结束标志和错误标志 无
scanf int scanf(format,args,
…)
char *format 从标准输入设备按format指示的格式字符串规定的格式,输入数据给args所指示的单元。args为指针 读入并赋给args数据个数。如文件结束返回EOF;若出错返回0
write int write(fd,buf,count) int fd;char *buf;
unsigned count; 丛buf指示的缓冲区输出count个字符到fd所指的文件中(非ANSI标准) 返回实际写入的字节数,如出错返回-1
------------------------------------------------------------------------------------------------------------------------------
(5)动态存储分配函数
在使用动态存储分配函数时,应该在源文件中使用命令:
#include“stdlib.h”
函数名 函数和形参类型 功能 返回值
callloc void *calloc(n,size)
unsigned n;
unsigned size; 分配n个数据项的内存连续空间,每个数据项的大小为size 分配内存单元的起始地址。如不成功,返回0
free void free(p)
void *p; 释放p所指内存区 无
malloc void *malloc(size)
unsigned SIZE; 分配size字节的内存区 所分配的内存区地址,如内存不够,返回0
realloc void *reallod(p,size)
void *p;
unsigned size; 将p所指的以分配的内存区的大小改为size。Size可以比原来分配的空间大或小 返回指向该内存区的指针。若重新分配失败,返回NULL
-------------------------------------------------------------------------------------------------------------------------------
(6)其他函数
“其他函数”是C语言的标准库函数,由于不便归入某一类,所以单独列出。使用这写函数时,应该在源文件中使用命令:
#include“stdlib.h”
函数名 函数和形参类型 功能 返回值
abs int abs(num)
int num 计算整数num的绝对值 返回计算结果
atof double atof(str)
char *str 将str指向的字符串转换为一个double型的值 返回双精度计算结果
atoi int atoi(str)
char *str 将str指向的字符串转换为一个int型的值 返回转换结果
atol long atol(str)
char *str 将str指向的字符串转换为一个long型的值 返回转换结果
exit void exit(status)
int status; 中止程序运行。将status的值返回调用的过程 无
itoa char *itoa(n,str,radix)
int n,radix;
char *str 将整数n的值按照radix进制转换为等价的字符串,并将结果存入str指向的字符串中 返回一个指向str的指针
labs long labs(num)
long num 计算c整数num的绝对值 返回计算结果
ltoa char *ltoa(n,str,radix)
long int n;int radix;
char *str; 将长整数n的值按照radix进制转换为等价的字符串,并将结果存入str指向的字符串 返回一个指向str的指针
rand int rand() 产生0到RAND_MAX之间的伪随机数。RAND_MAX在头文件中定义 返回一个伪随机(整)数
random int random(num)
int num; 产生0到num之间的随机数。 返回一个随机(整)数
rand_omize void randomize() 初始化随机函数,使用是包括头文件time.h。
strtod double strtod(start,end)
char *start;
char **end 将start指向的数字字符串转换成double,直到出现不能转换为浮点的字符为止,剩余的字符串符给指针end
*HUGE_VAL是turboC在头文件math.H中定义的数学函数溢出标志值 返回转换结果。若为转换则返回0。若转换出错返回HUGE_VAL表示上溢,或返回-HUGE_VAL表示下溢
strtol Long int strtol(start,end,radix)
char *start;
char **end;
int radix; 将start指向的数字字符串转换成long,直到出现不能转换为长整形数的字符为止,剩余的字符串符给指针end。
转换时,数字的进制由radix
确定。
*LONG_MAX是turboC在头文件limits.h中定义的long型可表示的最大值 返回转换结果。若为转换则返回0。若转换出错返回LONG_MAX表示上溢,或返回-LONG_MAX表示下溢
system int system(str)
char *str; 将str指向的字符串作为命令传递给DOS的命令处理器 返回所执行命令的退出状态
函数是数学名词,代数式中,凡相关的两数X与Y,对于每个X值,都只有一个Y的对应值。这种对应关系就表示Y是X的函数。
函数(function)的定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同,传统定义是从运动变化的观点出发,而近代定义是从集合、映射的观点出发。
函数的近代定义是给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B,假设B中的元素为y,则y与x之间的等量关系可以用y=f(x)表示,函数概念含有三个要素:定义域A、值域B和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。
函数,最早由中国清朝数学家李善兰翻译,出于其著作《代数学》。之所以这么翻译,他给出的原因是“凡此变数中函彼变数者,则此为彼之函数”,也即函数指一个量随着另一个量的变化而变化,或者说一个量。
一、格式化输入输出函数格式:
在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。各项的意义介绍如下:
1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:
表示输出类型的格式字符 格式字符意义
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀O)
x 以十六进制形式输出无符号整数(不输出前缀OX)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度实数
e 以指数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
2.标志
标志字符为-、+、#、空格四种,其意义下表所示:
标志格式字符 标 志 意 义
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号
# 对c,s,d,u类无影响;对o类, 在输出时加前
缀o 对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点
3.输出最小宽度
用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。
4.精度
精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符, 则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
5.长度
长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
二、字符处理函数
字符输出:putchar(ch)
字符输入:getchar()
三、字符串处理:
字符串输出:puts(char *)
字符串输入:gets(char *)
测试字符串长度:strlen(char *)
字符串复制函数:strcpy(char *,char *)
字符串比较:strcmp(char *str1,char *str2) [返回值:return str1-str2]
字符串连接:strcat(char *,char *)
四、常用转换函数"math.h"
double atof(char *x)
int atoi(char *X)
五、常用字符处理函数"ctype.h"
int isalpha(int x)
int islower(int x)
int isupper(int x)
int isdigit(int x)
int toupper(int x)
int tolower(int x)
int toascii(int x)
六、随机数"stdlib.h"
void randomize() /*对随机数发生器进行初始化*/
int random(int num) /*随机数发生函数*/
许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是程序中的函数。如C语言中:int max(int x,int y){return(xy?x:y;);}就是一段比较两数大小的函数,函数有参数与返回值。C++程序设计中的函数可以分为两类:带参数的函数和不带参数的函数。这两种参数的声明、定义也不一样。 带有(一个)参数的函数的声明:类型名标示符+函数名+(类型标示符+参数){}不带参数的函数的声明:void+函数名( ){
}花括号内为函数体。带参数的函数有返回值,不带参数的没有返回值。 C++中函数的调用:函数必须声明后才可以被调用。调用格式为:函数名(实参)调用时函数名后的小括号中的实参必须和声明函数时的函数括号中的形参个数相同。有返回值的函数可以进行计算,也可以做为右值进行赋值。 C语言中的部分函数:main(主函数)max(求最大数的函数)scanf(输入函数)printf(输出函数)
执行fun (a,10)
对于fun
如果n为1 直接返回t[0]
否则 传入同一个指针t, n自减。
其实就是无论n是多少 都会递归自减到1
返回的 就是a[0]
也就是11
输出11
C语言输入输出函数有很多,标准I/O函数中包含了如下几个常用的函数:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int getc(FILE *fp)
getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为 (ch = getc(fp)) != EOF.EOF为文件结束标志,定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin时,getc(stdin)就等同于getchar()了.
int putc(int ch,FILE *fp)
putc主要是把字符ch写到文件fp中去.如果fp为stdout,则putc就等同于putchar()了.
int getchar(void)
getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符串放在缓冲区中,getchar就是在缓冲区中一个一个的读字符.当然也可以在while循环中指定终止字符,如下面的语句:while ((c = getchar()) != '#')这是以#来结束的.
int putchar(int ch)
putchar(ch)主要是把字符ch写到标准流stdout中去.
char * gets(char *str)
gets主要是从标准输入流读取字符串并回显,读到换行符时退出,并会将换行符省去.
int puts(char *str)
puts主要是把字符串str写到标准流stdout中去,并会在输出到最后时添加一个换行符.
char *fgets(char *str, int num, FILE *fp)
str是存放读入的字符数组指针,num是最大允许的读入字符数,fp是文件指针.fgets的功能是读一行字符,该行的字符数不大于num-1.因为fgets函数会在末尾加上一个空字符以构成一个字符串.另外fgets在读取到换行符后不会将其省略.
int fputs(char *str, file *fp)
fputs将str写入fp.fputs与puts的不同之处是fputs在打印时并不添加换行符.
int fgetc(FILE *fp)
fgetc从fp的当前位置读取一个字符.
int fputc(int ch, file *fp)
fputc是将ch写入fp当前指定位置.
int fscanf(FILE *fp, char *format, 输入列表)
fscanf按照指定格式从文件中出读出数据,并赋值到参数列表中.
int fprintf(FILE *fp, char *format, 输出列表)
fprintf将格式化数据写入流式文件中.
数据块读写函数
fread (buffer,size,count,fp);
fwrite(buffer,size,count,fp);
参数说明:
buffer:是一个指针。
对fread 来说,它是读入数据的存放地址。
对fwrite来说,是要输出数据的地址(均指起始地址)。
size: 要读写的字节数。
count: 要进行读写多少个size字节的数据项。
fp: 文件型指针。