C语言函数参考手册.pptx
《C语言函数参考手册.pptx》由会员分享,可在线阅读,更多相关《C语言函数参考手册.pptx(143页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.C1.C标准库函数标准库函数:诊断1.中只定义了一个带参的宏assert,其定义形式如下:void assert(int 表达式)2.assert宏用于为程序增加诊断功能,它可以测试一个条件并可能使程序终止。在执行语句:assert(表达式);时,如果表达式为0,则在终端显示一条信息:Assertion failed:0,file 源文件名,line 行号 Abnormal program termination 然后调用abort终止程序的执行。3.在中,带参宏assert是被定义为条件编译的,如果在源文件中定义了宏NDEBUG,则即使包含了头文件,assert宏也将被忽略。第1页/共1
2、43页:字符类别测试在头文件中定义了一些测试字符的函数。在这些函数中,每个函数的参数都是整型int,而每个参数的值或者为EOF,或者为char类型的字符。中定义的标准函数列表如下:中定义的函数函数定义函数功能简介函数定义函数功能简介int isalnum(int c)检查字符是否是字母或数字int isprint(int c)检查字符是否是可打印字符int isalpha(int c)检查字符是否是字母int ispunct(int c)检查字符是否是标点字符int isascii(int c)检查字符是否是ASCII码int isspace(int c)检查字符是否是空格符int iscnt
3、rl(int c)检查字符是否是控制字符int isupper(int c)检查字符是否是大写字母int isdigit(int c)检查字符是否是数字字符int isxdigit(int c)检查字符是否是十六进制数字字符int isgraph(int c)检查字符是否是可打印字符int toupper(int c)将小写字母转换为大写字母int islower(int c)检查字符是否是小写字母int tolower(int c)将大写字母转换为小写字母第2页/共143页:错误处理中定义了两个常量,一个变量。1.EDOM 它表示数学领域错误的错误代码。2.ERANGE 它表示结果超出范围的
4、错误代码。3.errno 这是一个变量,该值被设置成用来指出系统调用的错误类型。第3页/共143页:整型常量在头文件中定义了一些表示整型大小的常量。下面给出这些常量的字符表示以及含义,见下表。字字符常量符常量取值取值含含义义CHAR_BIT8char类型的位数CHAR_MAX255或127char类型最大值CHAR_MIN0或-127char类型最小值INT_MIN-32767int类型最小值INT_MAX32767int类型最大值LONG_MAX2147483647long类型最大值LONG_MIN-2147483647long类型最小值SCHAR_MAX127signed char 类型最
5、大值SCHAR_MIN-127signed char 类型最小值SHRT_MAX32767short类型的最大值SHRT_MIN-32767short类型的最小值UCHAR_MAX255unsigned char 类型最大值UINT_MAX65535unsigned int 类型最大值ULONG_MAX4294967295unsigned long 类型最大值USHRT_MAX65535unsigned short类型的最大值第4页/共143页:地域环境在中,定义了7个常量,一个结构,2个函数。1.常量的定义LC_ALL:传递给setlocale的第一个参数,指定要更改该locale的哪个方面
6、。LC_COLLATE:strcoll和strxfrm的行为。LC_CTYPE:字符处理函数。LC_MONETARY:localeconv返回的货币信息。LC_NUMERIC:localeconv返回的小数点和货币信息。LC_TIME:strftime的行为。以上扩展成具有唯一取值的整型常数表达式,可作为setlocale的第一个参数。NULL:由实现环境定义的空指针。struct lconvchar*decimal_point;char*thousands_sep;char*grouping;char*int_curr_symbol;char*currency_symbol;char*mon
7、_decimal_point;char*mon_thousands_sep;char*mon_grouping;char*positive_sign;char*negative_sign;char int_frac_digits;char frac_digits;char p_cs_precedes;char p_sep_by_space;char n_cs_precedes;char n_sep_by_space;char p_sign_posn;char n_sign_posn;2.struct lconv结构结构 该结构用于存储和表示当前locale的设置。其结构定义如 右所示。3.函数
8、struct Iconv*localeconv(void);函数localeconv将一个struct Iconv类型的对象的数据成员设置成为按照当前地域环境 的有关规则进行数量格式化后的相应值。char*setlocale(int category,char*locale);函数setlocale用于更改和查询程序的整个当前地域环境或部分设置。地域环境变量由参数category(上面定义的6个常量)和locale指定。第5页/共143页:数学函数在中定义了一些数学函数和宏,用来实现不同种类的数学运算。下面给出中标准数学函数的函数定义及功能简介,见下表。函数定义函数功能简介函数定义函数功能简介
9、double exp(double x);指数运算函数,求e的x次幂函数double fmod(double x,double y);求模函数double log(double x);对数函数ln(x)double sin(double x);计算x的正弦值函数double log10(double x);对数函数logdouble cos(double x);计算x的余弦值函数double pow(double x,double y);指数函数(x的y次方)double tan(double x);计算x的正切值函数double sqrt(double x);计算平方根函数double as
10、in(double x);计算x的反正弦函数double ceil(double x);向上舍入函数double acos(double x);计算x的反余弦函数double floor(double x);向下舍入函数double atan(double x);反正切函数1double fabs(double x);求浮点数的绝对值double atan2(double y,double x);反正切函数2double ldexp(double x,int n);装载浮点数函数double sinh(double x);计算x的双曲正弦值double frexp(double x,int*e
11、xp);分解浮点数函数double cosh(double x);计算x的双曲余弦值double modf(double x,double*ip);分解双精度数函数double tanh(double x);计算x的双曲正切值在标准库中,还有一些与数学计算有关的函数定义在其他头文件中。第6页/共143页:非局部跳转在头文件中定义了一种特别的函数调用和函数返回顺序的方式。这种方式不同于以往的函数调用和返回顺序,它允许程序流程立即从一个深层嵌套的函数中返回。中定义了两个宏:int setjmp(jmp_buf env);/*设置调转点*/和longjmp(jmp_buf jmpb,int retv
12、al);/*跳转*/宏setjmp的功能是将当前程序的状态保存在结构env,为调用宏longjmp设置一个跳转点。setjmp将当前信息保存在env中供longjmp使用。其中env是jmp_buf结构类型的,该结构定义为:typedef struct unsignedj_sp;unsignedj_ss;unsignedj_flag;unsignedj_cs;unsignedj_ip;unsignedj_bp;unsignedj_di;unsignedj_es;unsignedj_si;unsignedj_ds;jmp_buf1;直接调用setjmp时,返回值为0,这一般用于初始化(设置跳转点
13、时)。以后再调用longjmp宏时用env变量进行跳转。程序会自动跳转到setjmp宏的返回语句处,此时setjmp的返回值为非0,由longjmp的第二个参数指定。下面通过例子来理解中定义的这两个宏。非局部跳转演示。#include jmp_buf env;/*定义jmp_buf类型变量*/int main(void)int value;value=setjmp(env);/*调用setjmp,为longjmp设置跳转点*/if(value!=0)printf(Longjmp with value%dn,value);exit(value);/*退出程序*/printf(Jump.n);lo
14、ngjmp(env,1);/*跳转到setjmp语句处*/return 0;本例程先应用setjmp宏为longjmp设置跳转点,当第一次调用setjmp时返回值为0,并将程序的当前状态(寄存器的相关状态)保存在结构变量env中。当程序执行到longjmp时,系统会根据setjmp保存下来的状态env跳转到setjmp语句处,并根据longjmp的第二个参数设置此时setjmp的返回值。本例程的运行结果为:Jump.Longjmp with value 1 一般地,宏setjmp和longjmp是成对使用的,这样程序流程可以从一个深层嵌套的函数中返回。第7页/共143页:信号头文件中提供了一些
15、处理程序运行期间引发的各种异常条件的功能,例如一些来自外部的中断信号等。在中只定义了两个函数:int signal(int sig,sigfun fname);和int raise(int sig);signal函数的作用是设置某一信号的对应动作。其中参数sig用来指定哪一个信号被设置处理函数。在标准C 中支持的信号如下表。取取值值说说明明默默认执行动作认执行动作使使用的操作系统用的操作系统SIGABRT异常中止中止程序UNIX DOSSIGPPE算术运算错误中止程序UNIX DOSSIGILL非法硬件指令中止程序UNIX DOSSIGINT终端中断中止程序UNIX DOSSIGSEGV无效的
16、内存访问中止程序UNIX DOSSIGTERM中止信号中止程序UNIX DOS参数fname是一个指向函数的指针,当sig的信号发生时程序会自动中断转而执行fname指向的函数。执行完毕再返回断点继续执行程序。系统提供了两个常量函数指针,可以作为函数的参数传递。它们分别是:SIG_DEF:执行默认的系统第一的函数。SIG_IGN:忽略此信号。raise函数的作用是向正在执行的程序发送一个信号,从而使得当前进程产生一个中断而转向信号处理函数signal执行。其中参数sig为信号名称,它的取值范围同函数signal中的参数sig取值范围相同,见左表。下面通过例子理解函数signal和raise。例
17、 signall和raise函数演示#include#include void Print1();void Print2();int main()signal(SIGINT,Print1);printf(Please enter Ctr+c for interuptn);getchar();signal(SIGSEGV,Print2);printf(Please enter any key for a interuptn);getchar();raise(SIGSEGV);void Print1()printf(This is a SIGINT interupt!n);void Print2(
18、)printf(This is a SIGSEGV interupt!n);本例程首先通过用户终端输入Ctrl+c产生一个终端中断,然后应用signal函数调用中断处理函数Print1;再通过raise函数生成一个无效内存访问中断,并通过signal函数调用中断处理函数Print2。本例程的运行结果为:Please enter Ctr+c for interuptCThis is a SIGINT interupt!Please enter any key for a interuptaThis is a SIGSEGV interupt第8页/共143页:可变参数表 可变参数表中的宏是用来定
19、义参数可变的函数的。在C语言中,有些库函数或者用户自定义的函数的参数是可变的,常用省略号“”(例如库函数中的printf),定义这样的函数就要使用到中的宏。1.va_list 用于保存宏va_start,va_arg以及va_end所需信息的数据类型。2.中还定义了三个宏 void va_start(va_list ap,parmN);type va_arg(va_list ap,type);void va_end(va_list ap);va_start的作用是初始化ap,因此va_start要在所有其它的va_开头的宏前面最先使用(除了用va_list定义变量外),后面的va_copy,v
20、a_arg,va_end 都要使用到ap。在一对va_start和va_end之间不能再次使用va_start宏。其中,parmN 为.之前的最后一个参数。例如,printf函数定义为:printf(const char*format,.);那么在printf函数中的va_start使用之后,parmN 的值就等于*format。va_arg的作用就是返回参数列表ap中的下一个具有type类型的参数,每次调用va_arg都会修改ap的值,这样才能连续不断地获取下一个type类型的参数。va_end与va_start构成了一个scope,va_end标志着结束,va_end之后ap就无效了。第9
21、页/共143页:公共定义 在头文件中,指定了标准库中的公共定义。其中主要包括以下内容:1.NULL 空指针类型常量。2.offset(type,member-designator)它是扩展iz-t类型的一个整型常数表达式。它的值为从type定义的结构类型 的开头到结构成员member-designator的偏移字节数。3.ptrdiff_t 表示两指针之差的带符号整数类型。4.size_t 表示由sizeof运算符计算出的结果类型,它是一个无符号整数类型。5.wchar_t 它是一种整数类型,取值范围为在被支持的地域环境中最大扩展字符集的所有字符的各种代码,空字符代码值为0。第10页/共143
22、页:输入输出在头文件中定义了输入输出函数,类型和宏。这些函数、类型和宏几乎占到标准库的三分之一。下面给出头文件中声明的函数以及功能简介,见右表。函数定义函数功能简介函数定义函数功能简介FILE*fopen(char*filename,char*type)打开一个文件int puts(char*string)送一字符串到流中FILE*fropen(char*filename,char*type,FILE*fp)打开一个文件,并将该文件关联到fp指定的流int ungetc(char c,FILE*stream)把一个字符退回到输入流中int fflush(FILE*stream)清除一个流int
23、 fread(void*ptr,int size,int nitems,FILE*stream)从一个流中读数据int fclose(FILE*stream)关闭一个文件int fwrite(void*ptr,int size,int nitems,FILE*stream)写内容到流中int remove(char*filename)删除一个文件int fseek(FILE*stream,long offset,int fromwhere)重定位流上的文件指针int rename(char*oldname,char*newname)重命名文件long ftell(FILE*stream)返回当
24、前文件指针FILE*tmpfile(void)以二进制方式打开暂存文件int rewind(FILE*stream)将文件指针重新指向一个流的开头char*tmpnam(char*sptr)创建一个唯一的文件名int fgetpos(FILE*stream)取得当前文件的句柄int setvbuf(FILE*stream,char*buf,int type,unsigned size)把缓冲区与流相关int fsetpos(FILE*stream,const fpos_t*pos)定位流上的文件指针int printf(char*format.)产生格式化输出的函数void clearerr(
25、FILE*stream)复位错误标志int fprintf(FILE*stream,char*format,argument,.)传送格式化输出到一个流中int feof(FILE*stream)检测流上的文件结束符int scanf(char*format,argument,.)执行格式化输入int ferror(FILE*stream)检测流上的错误int fscanf(FILE*stream,char*format,argument.)从一个流中执行格式化输入void perror(char*string)系统错误信息int fgetc(FILE*stream)从流中读取字符char*f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 函数 参考手册
限制150内