第二篇:ctype.h快速入门

 

简介: 

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

 

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

 

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

 

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

 

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

 

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

 

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

#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>

int main ( int argc, char *argv[] )
{
    int c = 'a';
    int uc; 

    if( isalpha( c ) )
    {
        printf( "'%c' is an alphabet/n" ,c );

        if( islower( c ))
        {
            uc = toupper( c );
            printf( "uppercase: %c/n", uc );
        }
        else
        {
            uc = tolower( c );
            printf( "lowercase: %c/n", uc );
        }
    }
    else
    {
        printf( "'%c' is not an alphabet/n" ,c );
    }   

    return EXIT_SUCCESS;
}

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

 

ASCII字符iscntrlisspaceisupperislowerisalphaisdigitisxdigitisalnumispunctisgraphisprint
0x00 .. 0x08NUL, (其他控制字符)x          
0x09 .. 0x0D(空白字符 代码: '/t','/f','/v','/n','/r')xx         
0x0E .. 0x1F(控制字符)x          
0x20空格 (' ') x        x
0x21 .. 0x2F!"#$%&'()*+,-./        xxx
0x30 .. 0x3901234567890     xxx xx
0x3a .. 0x40:;<=>?@        xxx
0x41 .. 0x46ABCDEF  x x xx xx
0x47 .. 0x5AGHIJKLMNOPQRSTUVWXYZ  x x  x xx
0x5B .. 0x60[/]^_`        xxx
0x61 .. 0x66abcdef   xx xx xx
0x67 .. 0x7Aghijklmnopqrstuvwxyz   xx  x xx
0x7B .. 0x7E{|}~        xxx
0x7F(DEL)x          

 

作者:Yao 
首发自:http://blog.yaohuiji.com/ 
欢迎转载,作者期望转载时带上原文链接,不过这不是必须的。但务必在文章标题处标明【转载】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值