西游记武器大全:第二篇:ctype.h快速入门 - 梅花香自苦寒来 - 博客园

来源:百度文库 编辑:九乡新闻网 时间:2024/04/26 23:48:48
第二篇:ctype.h快速入门

简介:

头文件ctype.h声明了一组用于分类和转换单个字符的函数。所有的函数都接收一个int型的参数,并返回一个int——返回的int可能代表一个字符,也可能代表的是bool值(0为假,非0为真)。

你可能会有疑问,既然是字符操作,接受的参数为什么不用char,而用int? Good question,答案我也不确定……O_O好吧,我们继续……

因为这些“函数”太过常用,且调用频繁,所以为了提高效率,这些“函数”是由一些宏实现的,通过查看源文件可以很容易发现这一点。还有一点需要了解的是,如果修改了区域设置(默认为“C”区域设置),这些函数的行为可能会略有不同,不过不用担心,现在只需要知道有这么一个概念,后面介绍区域设置(locale.h)会再详细讨论。 它们可以分为两组。一组用来判断字符是否属于某个分类,包括:

名称 签名 描述 isalnum int isalnum ( int c ); 数字或字母 isalpha int isalpha ( int c ); 字母,或者那些实现定义的字符集中iscntrl,isdigit,ispunct,isspace判定都 不为真的字符。在“C”区域设置里,isalpha只是isupper,islower返回真 的字符 iscntrl int iscntrl ( int c ); 控制字符,与isprint相反,即不可打印字符 isdigit int isdigit ( int c ); 十进制数字字符 isgraph int isgraph ( int c ); 除空格(' ')以外的其他可打印(isprint为true)字符 islower int islower ( int c ); 小写字母 isprint int isprint ( int c ); 包括空格(' ')在内的打印字符 ispunct int ispunct ( int c ); 除空格(' ')和isalnum判定为真的字符以外的所有打印字符 isspace int isspace ( int c ); 空白字符 isupper int isupper ( int c ); 大写字母 isxdigit int isxdigit ( int c ); 16进制数字字符

另外一组用来转换大小写,包括:

名称 签名 描述 toupper int toupper ( int c ); 转换c为大写 tolower int tolower ( int c ); 转换c为小写

下面拿isalpha,toupper/tolower做示范,看如何使用这些函数,输出结果就不贴出来了,分不清大小写的童鞋自觉面壁>_<

view sourceprint? 01 #include 02 #include 03 #include 04 05 int main ( int argc, char *argv[] ) 06 { 07 int c = 'a'; 08 int uc; 09 10 if( isalpha( c ) ) 11 { 12 printf( "'%c' is an alphabet\n" ,c ); 13 14 if( islower( c )) 15 { 16 uc = toupper( c ); 17 printf( "uppercase: %c\n", uc ); 18 } 19 else 20 { 21 uc = tolower( c ); 22 printf( "lowercase: %c\n", uc ); 23 } 24 } 25 else 26 { 27 printf( "'%c' is not an alphabet\n" ,c ); 28 } 29 30 return EXIT_SUCCESS; 31 }

最后附一张默认的“C”区域设置下ASCII码对应的判定结果,可以帮助你对这些函数的判定结果有个直观的印象,enjoy it !

ASCII 字符 iscntrl isspace isupper islower isalpha isdigit isxdigit isalnum ispunct isgraph isprint 0x00 .. 0x08 NUL, (其他控制字符) x 0x09 .. 0x0D (空白字符 代码: '\t','\f','\v','\n','\r') x x 0x0E .. 0x1F (控制字符) x 0x20 空格 (' ') x x 0x21 .. 0x2F !"#$%&'()*+,-./ x x x 0x30 .. 0x39 01234567890 x x x x x 0x3a .. 0x40 :;<=>?@ x x x 0x41 .. 0x46 ABCDEF x x x x x x 0x47 .. 0x5A GHIJKLMNOPQRSTUVWXYZ x x x x x 0x5B .. 0x60 [\]^_` x x x 0x61 .. 0x66 abcdef x x x x x x 0x67 .. 0x7A ghijklmnopqrstuvwxyz x x x x x 0x7B .. 0x7E {|}~ x x x 0x7F (DEL) x 作者:Yao
首发自:http://blog.yaohuiji.com/
欢迎转载,作者期望转载时带上原文链接,不过这不是必须的。但务必在文章标题处标明【转载】分类: C标准库快速入门