C语言 字符测试篇

 

字符测试篇

        本人原本无意写博客,不过由于某同龄女生的刺激,开了这个博客.本人很菜,不过贵在坚持.必然有不足之处,还请大家改正.

                 

                     谈到字符就不的不说下计算机的识别问题。我们知道计算机仅仅只是能识别二进制。

        比如一个能识别32位的系统,代表什么意思呢,能得到什么样的信息?在计算机组成原理里面对着个讨论的比较多。它代表计算机的CPU一次能处理32位。即系统的地址总线是32根,说的再通俗点就是CPU插着32根电线,每根电线都能表示1或0.那么在概率上有多少种排列方式呢?就是2的32次种排列。那么着又代表着什么呢?

            那么这里就又不得不谈到单位问题了。

         1K = 1024bit

         1M = 1024K

         1G = 1024M

           那么2的32次就 = 4G 这个东西就是32内存的大小了。至于为什么那就简单了,你想想CPU肯定是访问内存的(当然这里还有cache不过暂时不讨论)那么CPU能最大访问多少的内存空间呢?就是4G了,CPU最大只能访问4G那么你内存没理由比这个还大把(其实内存就是根据32根地址线来造的),再大CPU都访问不了了哪有什么用。

         偏题有点远了。一个32位分成4份,每份8位,叫一个字节1byte = 8bit.至于为什么这样分呢?我认为这是为了满足键盘上的字符,谭浩强上的书写着前127是标准字符,后面的是IBM用的。管它的什么东西,子要知道8位可以表示任何的字符。少了不够,多了浪费.再者因为计算机天生只有2根手指头,必须是2个指数。于是乎就8位一个字节了。因为8位二进制是给机器看的,人看的太累了,于是就用ASCII来表示8位,就产生了字符。。。。。。。。

        

        撤了这么多现在才开始真正的代码不过都很简单的~ _ ~

        首先大家应该要知道在C中字符测试的函数其实是宏函数。就是通过宏来定义的

        都要通过#include <ctype.h>头文件

 

1      isdigit  这个是测试是否是数字

        #define isdigit(ch) ((ch) > '0' && (ch) < '9')

 

2      islower 这个是测试是否是小写字母  

        #define islower(ch) ((ch) > 'a' && (ch) < 'z')

 

3      isupper 测试是否是大写字母

        #define isupper(ch) ((ch) > 'A' && (ch) < 'Z')

 

4      isalpha 测试是否是字母

        #define isalpha(ch) (isupper(ch) || islower(ch))

 

5      isalnum 测试是否是数字或字母

        #define isalnum(ch) (isdigit(ch) || isalpha(ch))

 

6      isascii 测试是否是0到127之间的字符

        #define isascii(ch) ((ch) > 0 && (ch) < 128)

 

7      iscntrl 测试是否是0到30之间的字符

        #define iscntrl(ch) ((ch) > 0 && (ch) < 31)

 

8      isspace 测试是否为空格字符(空格字符包括' ' ,'\t' ,'\r' ,'\n','\v','\f')晕我也才看到

        #define isspace(ch) ((ch) == '\t' || (ch) == ' ' || (ch) == '\r' || (ch) == '\n' || (ch) == '\v' || (ch) == '\f')

 

9      ispunct 测试是否是标点符号或特殊符号,就是非空格,非数字,非英文

        #define ispunct(ch) (!isspace(ch) && !isdigit(ch) && !isalpha(ch))

 

10    isxdigit 测试是否是16进制数

        #define ispunct(ch) (isdigit(ch) || ((ch) >= 'a' && <= 'f') || ((ch) >= 'A' && (ch) <= 'F'))

 

11    isgraphis 测试是否是可以打印的字符且非空格字符。我闷了,还真不知道。如果有谁知道告诉我下

 

12    isprint 测试是否是可以打印的字符可以打印空格 还是不知道。

 

第一次写,写的不好是必然的。。。。。。。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值