C++常用函数.doc_第1页
C++常用函数.doc_第2页
C++常用函数.doc_第3页
C++常用函数.doc_第4页
C++常用函数.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ctype.h 中常用函数:字符类型判断及简单转换 C语言中 ,在C+中为本文下面列出这个头文件的常用函数。目的是了解字符判断函数和学习简洁代码编写。注意:C+中的和头文件继承于C。在许多实现方式中,函数在s记命名空间内部和外部都定义了,以允许旧式C程序编译和链接。此时,函数名无论是否带std限定符都能工作,但因为我们编写的是C+程序,所以应限定名称。isalnum() 如果参数为字母数字,则返回tureisalpha() 如果参数为字母,则返回tureiscntrl() 如果参数为控制字符,则返回tureisdigit() 如果参数为数字(0-9),则返回tureisgraph() 如果参数为空格之外的打印字符,则返回tureislower() 如果参数是小写字母,则返回tureisprint() 如果参数为打印字符,包括空格,则返回tureispunct() 如果参数为标点符号,则返回tureisspace() 如果参数为标准空白字符(空格,进纸,换行符,回车,水平制表符,垂直制表符),则返回turesiupper() 如果参数为大写字母,则返回tureisxdigit() 如果参数为十六进制数,则返回turetolower() 如果参数为大写字母,即转化为小写字母,否则返回原值toupper() 如果参数为小写字母,即转化为大写字母,否则返回原值 /*/判断字符c是否为英文字母:0x410x61,如果是大写字母,/将通过(ch|0x20)转为小写字母值来判断intisalpha(intch)return(unsignedint)(ch|0x20)-a)26u;/*/判断字符c是否为大写英文字母intisupper(intch)return(unsignedint)(ch-A)26u;/*/判断字符c是否为小写英文字母intislower(intch)return(unsignedint)(ch-a)26u;/*/判断字符c是否为数字intisdigit(intch)return(unsignedint)(ch-0)10u;/*/判断字符c是否为十六进制数字。/当c为A-F,a-f或0-9之间的十六进制数字时,返回非零值。intisxdigit(intch)return(unsignedint)(ch-0)10u|(unsignedint)(ch|0x20)-a)6u;/*/判断字符c是否为空白符。空白符指空格、水平制表、垂直制表、换页、回车和换行符。intisspace(intch)return(unsignedint)(ch-9)5u|ch=;/*/判断字符c是否为标点符号。标点符号指那些既不是字母数字,也不是空格的可打印字符。intispunct(intch)returnisprint(ch)&!isalnum(ch)&!isspace(ch);/*/测试参数ch是否是字母(A-Z,大小写均可)或数字(0-9)intisalnum(intch)return(unsignedint)(ch|0x20)-a)26u|(unsignedint)(ch-0)10u;/*/判断字符c是否为可打印字符(含空格)。当c为可打印字符(0x20-0x7e)时,/返回非零值,否则返回零。intisprint(intch)return(unsignedint)(ch-)127u-;/*/判断字符c是否为除空格外的可打印字符。可打印字符(0x21-0x7e)intisgraph(intch)return(unsignedint)(ch-!)127u-!;/*/判断字符c是否为控制字符。当c在0x00-0x1F之间或等于0x7F(DEL)时,/返回非零值,否则返回零。intiscntrl(intch)return(unsignedint)ch32u|ch=127;/*/小写字母转换为大写字母。inttoupper(intch)if(unsignedint)(ch-a)26u)ch+=A-a;returnch;/返回一个按位与不就行了吗?简练为好,不做检测/return(unsignedint)(ch|0x20);/tolower类似表示为return(unsignedint)(ch&0x5F);/*/大写字母转换为小写字母。inttolower(intch)if(unsignedint)(ch-A)26u)ch+=a-A;returnch;/*/判断字符c是否为ascii码。ascii码指0x00-0x7F之间的字符。intisascii(intch)return(unsignedint)ch128u;/*/将字符c转换为ascii码。toascii函数将字符c的高位清零,仅保留低七位。返回转换后的数值。inttoascii(intc)returnc&0x7f;/*/判断字符c是否为英文字母和下划线intiscsymf(intc)return(isalpha(c)|(c=_);/*/判断字符c是否为英文字母、数字和下划线intiscsym(intc)return(isalnum(c)|(c=_);2. 在stdlib.h中主要包含数字字符处理的函数有 atoi(), atof(), strtol(), strtod(),eccvt()等函数及其扩展函数。他们之间的共同点以及区别在下面功能描述中有说明,要详细了解需看手册和源代码实现。函数原型:int atoi(const char *nptr); long atol(const char *nptr); long long atoll(const char *nptr); long long atoq(const char *nptr);功能描述:atoi() 函数将指针nptr 指向开始的字符转换成int 类型。行为与 strtol(nptr, (char *) NULL, 10)相同; 只是atoi() 不检测错误。atol() atoll() 和atoi() 有相同动作。只是转换类型有所不同,atoq()是atoll()的过时名。返 回 值:返回转换的值。参考函数:atof(3), strtod(3), strtol(3), strtoul(3)函数原型:double atof(const char *nptr);功能描述:atof() 函数将指针nptr 指向开始的字符转换成double 类型。行为与 strtod(nptr, (char *) NULL)相同; 只是atof() 不检测错误。返 回 值:返回转换的值。参考函数:atoi(3), atol(3), strtod(3), strtol(3), strtoul(3)函数原型:long int strtol(const char *nptr, char *endptr, int base); long long int strtoll(const char *nptr, char *endptr, int base);功能描述:strtol() 函数根据base 给的进制将nptr 指向的开始的字符串转换为长整数值,base 必须在2-36之间,或特殊值0. 字符串可能以任意空格为开始,后跟一个+或-的单个选择符。如果base 为0或16,string 可能包含“0x” 前缀, 那么数字将被以16进制读入;base为0被当作10进制,除非符号后下一个字符为0,这种情形被当作8进制。 字符串被显示转换为长整形值,直到遇到第一个基于base 不合法的字符(base 大于10,那么A表示10.Z表示35)。 如果endptr 不为NULL,strtol() 将第一个不合法字符的地址保存在*endptr中。如果根本没有数字,strtol()将字符 串地址,也就是nptr 初始值保存到 *endptr,并返回0。特别的,如果*nptr不是0,但在返回时 *endptr是0, 整个字符串是合法的。 strtoll() 函数类似strtol(),但返回是long long 整型值。返 回 值:strtol() 函数返回转换的结果,除非向下溢出(underflow)或向上溢出(overflow)。如果向下溢出,返回LONG_MIN。 如果向上溢出返回LONG_MAX。两种情况的errno都会被设置为ERANGE。也可能返回0,在base 包含不被支持值时。 strtoll()也一样(不过LLONG_MIN 和LLONG_MAX 替代LONG_MIN 和LONG_MAX)。参考函数:atof(3), atoi(3), atol(3), strtod(3), strtoul(3) strtoul() 和strtol基本类似,只是返回无符号长整型。例外说明:这些函数还有本地相关的类型。例如strtol_l(), strtoul_l() 等等。函数原型:double strtod(const char *nptr, char *endptr); float strtof(const char *nptr, char *endptr); long double strtold(const char *nptr, char *endptr);功能描述:strtod(), strtof(), 和strtold() 函数将nptr 指向开始的字符串转换成double,float 和long double 类型 字符串期望格式开始于sispace() 可辨认的空格,可选正符+号或负符号-,然后是小数,或16进制小数, 无限值(infinity),或NAN(not-a-number)。 小数包含非空系列十进制数字,可能包含一个基数字符(小数点,和本地环境有关,通常为.),然后跟着十进制 指数(exponent)。十进制指数包含一个E或e,跟着正负号,非空十进制数字序列,乘幂为10。 十六进制小数包含0x或0X,跟着非空16进制小数数字系列,可能包含一个基数字符(同上),然后跟着二进制 指数。二进制指数包含P或p,跟着可选正负号,跟着非空数字(decimal digits)系列,乘幂为2。最少有一个 基数字符和二进制指数出现。 无限表示为INF 或INFINITY。为忽略类型。 NAN 也是忽略类型,跟着(,一系列字符,跟着)。字符串指定和系统实现NAN的方式有关。返 回 值:如果有转换,就返回转换值。如果endptr 为非NULL,*endptr 指向最后一个被转换字符的后面。 如果没有转换,返回0,nptr的值保存到*endptr(referenced by endptr)。 如果正确值导致向上溢出,根据数值的符号返回正或负的HUGE_VAL(HUNGE_VALF, HUGE_VALL),errno被设置为ERANGE。 如果导致相信溢出,返回0,errno 被设置为ERANGE。参考函数:atof(3), atoi(3), atol(3), strtol(3), strtoul(3)函数原型:char *ecvt(double number, int ndigits, int *decpt, int *sign); char *fcvt(double number, int ndigits, int *decpt, int *sign);功能描述:ecvt() 函数将number 转换为一个包含ndigits个数字以null终止的字符串。并返回指向字符串的指针。高顺序位数字为非0, 除非number 为0。字符串不包含小数点;但是小数点相对于字符串开始位置保存于*decpt 中。*decpt 为负值,意味着小数点 位于字符串开始的左边。如果number的符号为负,*sign 被设置为非0, 否则设置成0;如果number 是0,不指定*decpt 是0 或1。 fcvt() 与ecvt() 相同,只是ndigits 指定小数点后的数字数量。 返 回 值:返回一静态字符串指针,字符串为ASCII 表示的数字。不可以线程重入。参考函数:ecvt_r(3), gcvt(3), qecvt(3), setlocale(3), sprintf(3)函数原型:long a64l(char *str64); char *l64a(long value);功能描述:这两个函数提供32-bit 长整型和little-endian 64进制的ASCII 字符串(长度从0到6)转换。 如果str64 长度大于6,那只用前6字节。如果value大于32-bit,那只用value的低32位。a64l对结果符号扩展。 . 代表0,/代表1,0-9 代表2-11,A-Z 代表12-37,a-z 代表38-63, 和网络版本的64-encode 不同。 所以有123 = 59*640 + 1*641 = v/。返 回 值:返回相应的值。3. stdlib.h 中常用函数 简单数值函数和算法函数一、简单数值函数函数原型:int abs(int j); long int labs(long int j); long long int llabs(long long int j); #include intmax_t imaxabs(intmax_t j);功能描述:abs() 函数计算参数j的绝对值。labs() llabs() imaxabs() 计算函数对应的合适类型整数j 的绝对值。返 回 值:返回函数适合的整数类型的参数绝对值。参考函数:cabs(3), ceil(3), fabs(3), floor(3), rint(3)floor(double) 不大于参数的最大整数。ceil(double) 不小于参数的最小整数。 fabs() 浮点数绝对值。cabs() 复数取模。rint() 返回整数附近的值。例外说明:abs() labs() C89标准就包含了,llabs() imaxabs() 在C99标准加入。(特殊数值:+0, -0 , NaN, infinite )函数原型:div_t div(int numerator, int denominator); ldiv_t ldiv(long numerator, long denominator); lldiv_t lldiv(long long numerator, long long denominator); #include imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator);功能描述:div() 函数计算numerator/denomiator 的值,返回商(quotient)和余数(remainder)到div_t 结构体中。 在结构体中,包含两个整型成员quot 和rem。商往0靠。结果满足 quot*denominator+rem = numerator。 ldiv(), lldiv(), and imaxdiv() 函数具有相同功能,只是返回值在结构中的类型和除数的相同。返 回 值:返回相应的结构体,div_t, ldiv_t, lldiv_t例外说明:例如div_t q = div(-5, 3); 结构中q.quot 和q.rem 分别为-1 为-2.简单算法函数函数原型:void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *);功能描述:qsort() 函数将元素大小为size,的nmemb 个元素组成的数组排序。base指针指向数组的开始。 数组的内容升序或降序排列是根据compar指向的比较函数,比较函数被调用来比较两个参数指向 的对象。 比较函数必须返回小于0,等于0或大于0,他们分别表示参数1指向对象小于,等于或大于第二个。 如果两个成员比较相等,那么它们在数组中顺序不确定(不是稳定排序)。返 回 值:没有返回值。参考函数:GNU有可重入类型对应函数,qsort_r(), _USE_GNU;例外说明:快速排序。函数原型:void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *);功能描述:bsearch() 函数搜索nmemb对象的数组,base指向最初成员,寻找和key 匹配的对象。数组每个成员的大小为size。 数组内容应该由compar 指向的比较函数升序排列好,compar 例程和qsort 的一样。返 回 值:返回指向匹配数组成员的指针;如果没有匹配发现就返回NULL。如果成员中有多个和key匹配,那么返回是不确定的。参考函数:hsearch(3), lsearch(3), qsort(3), tsearch(3)hsearch() 哈希(hash)查找;lsearch() 线性(linear)查找;tsearch() 二叉树(binary tree)查找;例外说明:折半查找,二分检索。简单应用例子:#include#include#include#include/*字符串比较函数,传送过来的是指向字符串指针的指针*/staticintcmpstringp(constvoid*p1,constvoid*p2)returnstrcmp(*(char*const*)p1,*(char*const*)p2);/*整数的比较函数,传送过来的参数是整数的指针*/staticintcomintp(constvoid*ip1,constvoid*ip2)return*(int*)ip1-*(int*)ip2;/*其他结构的参数也差不多,先通过指针求得*比较的对象,然后在进行比较,假设有一个student结构,*按该结构的成员id值来排序,比较函数类似如下:*/typedefstructstudentintid;charname32;student;staticintcomstup(constvoid*stup1,constvoid*stup2)return(student*)stup1)-id-(student*)stup2)-id;intmain(intargc,char*argv)intj;intarray10=9,5,56,46,8,33,23,39,19,2;qsort(array,10,sizeof(int),comintp);for(j=0;j10;j+)printf(%dt,arrayj);printf(n);qsort(&argv1,argc-1,sizeof(argv1),cmpstringp);for(j=1;jargc;j+)puts(argvj);exit(EXIT_SUCCESS);4. 内存分配和释放函数:函数原型:void *calloc(size_t nmemb, size_t size);功 能:calloc() 分配nmemb 个元素的数组空间,每个元素大小为size 个字节;返回分配内存的指针。 所分配的内存设置为0;如果nmemb 或size 为0,返回NULL或是一个可被成功传送给free函数的唯一指针值。返 回 值:返回指向新分配内存指针,这个内存指针合适地对齐任何类型变量。出错返回N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论