1. 首先这些全部是宏,只不过我们初学者和使用者可以直接把他当作函数用。

 

isalnum(测试字符是否为英文或数字)

相关函数

isalpha,isdigit,islower,isupper

表头文件

#include<ctype.h>

定义函数

int isalnum (int c)

函数说明

检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用"isalpha(c) || isdigit(c)"做测试。

返回值

若参数c为字母或数字,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/* 找出str 字符串中为英文字母或数字的字符*/
#include < ctype.h>
main()
{
char str[]="123c@#FDsP[e?";
int i;
for (i=0;str[i]!=0;i++ )
if ( isalnum(str[i])) printf("%c is an alphanumeric character\n",str[i]);
}

执行

1 is an apphabetic character
2 is an apphabetic character
3 is an apphabetic character
c is an apphabetic character
F is an apphabetic character
D is an apphabetic character
s is an apphabetic character
P is an apphabetic character
e is an apphabetic character

 

isalpha (测试字符是否为英文字母)

相关函数

isalnum,islower,isupper

表头文件

#include<ctype.h>

定义函数

int isalpha (int c)

函数说明

检查参数c是否为英文字母,在标准c中相当于使用"isupper(c)||islower(c)"做测试。

返回值

若参数c为英文字母,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/* 找出str 字符串中为英文字母的字符*/
#include <ctype.h>
main()
{
char str[]="123c@#FDsP[e?";
int i;
for (i=0;str[i]!=0;i++)
if(isalpha(str[i])) printf("%c is an alphanumeric character\n",str[i]);
}

执行

c is an apphabetic character
F is an apphabetic character
D is an apphabetic character
s is an apphabetic character
P is an apphabetic character
e is an apphabetic character

 

isascii(测试字符是否为ASCII 码字符)

相关函数

iscntrl

表头文件

#include <ctype.h>

定义函数

int isascii(int c);

函数说明

检查参数c是否为ASCII码字符,也就是判断c的范围是否在0到127之间。

返回值

若参数c为ASCII码字符,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/* 判断int i是否具有对映的ASCII码字符*/
#include<ctype.h>
main()
{
int i;
for(i=125;i<130;i++)
if(isascii(i))
printf("%d is an ascii character:%c\n",i,i);
else
printf("%d is not an ascii character\n",i);
}

执行

125 is an ascii character:}
126 is an ascii character:~
127 is an ascii character:
128 is not an ascii character
129 is not an ascii character

 

iscntrl(测试字符是否为ASCII 码的控制字符)

相关函数

isascii

表头文件

#include <ctype.h>

定义函数

int iscntrl(int c);

函数说明

检查参数c是否为ASCII控制码,也就是判断c的范围是否在0到30之间。

返回值

若参数c为ASCII控制码,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

 

isdigit(测试字符是否为阿拉伯数字)

相关函数

isxdigit

表头文件

#include<ctype.h>

定义函数

int isdigit(int c)

函数说明

检查参数c是否为阿拉伯数字0到9。

返回值

若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/* 找出str字符串中为阿拉伯数字的字符*/
#include<ctype.h>
main()
{
char str[]="123@#FDsP[e?";
int i;
for(i=0;str[i]!=0;i++)
if(isdigit(str[i])) printf("%c is an digit character\n",str[i]);
}

执行

1 is an digit character
2 is an digit character
3 is an digit character

 

isgraphis(测试字符是否为可打印字符)

相关函数

isprint

表头文件

#include <ctype.h>

定义函数

int isgraph (int c)

函数说明

检查参数c是否为可打印字符,若c所对映的ASCII码可打印,且非空格字符则返回TRUE。

返回值

若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/* 判断str字符串中哪些为可打印字符*/
#include<ctype.h>
main()
{
char str[]="a5 @;";
int i;
for(i=0;str[i]!=0;i++)
if(isgraph(str[i])) printf("str[%d] is printable character:%d\n",i,str[i]);
}

执行

str[0] is printable character:a
str[1] is printable character:5
str[3] is printable character:@
str[4] is printable character:;

 

islower(测试字符是否为小写字母)

相关函数

isalpha,isupper

表头文件

#include<ctype.h>

定义函数

int islower(int c)

函数说明

检查参数c是否为小写英文字母。

返回值

若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

#include<ctype.h>
main()
{
char str[]="123@#FDsP[e?";
int i;
for(i=0;str[i]!=0;i++)
if(islower(str[i])) printf("%c is a lower-case character\n",str[i]);
}

执行

c is a lower-case character
s is a lower-case character
e is a lower-case character

 

isprint(测试字符是(否为可打印字符)

相关函数

isgraph

表头文件

#include<ctype.h>

定义函数

int isprint(int c);

函数说明

检查参数c是否为可打印字符,若c所对映的ASCII码可打印,其中包含空格字符,则返回TRUE。

返回值

若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/* 判断str字符串中哪些为可打印字符包含空格字符*/
#include<ctype.h>
main()
{
char str[]="a5 @;";
int i;
for(i=0;str[i]!=0;i++)
if(isprint(str[i])) printf("str[%d] is printable character:%d\n",i,str[i]);
}

执行

str[0] is printable character:a
str[1] is printable character:5
str[2] is printable character:
str[3] is printable character:@
str[4] is printable character:;

 

isspace(测试字符是否为空格字符)

相关函数

isgraph

表头文件

#include<ctype.h>

定义函数

int isspace(int c)

函数说明

检查参数c是否为空格字符,也就是判断是否为空格('')、定位字符('\t')、CR('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。

返回值

若参数c为空格字符,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/*将字符串str[]中内含的空格字符找出,并显示空格字符的ASCII码*/
#include <ctype.h>
main()
{
char str="123c @# FD\tsP[e?\n";
int i;
for(i=0;str[i]!=0;i++)
if(isspace(str[i]))
printf("str[%d] is a white-space character:%d\n",i,str[i]);
}

执行

str[4] is a white-space character:32
str[7] is a white-space character:32
str[10] is a white-space character:9 /* \t */
str[16] is a white-space character:10 /* \t */

 

ispunct(测试字符是否为标点符号或特殊符号)

相关函数

isspace,isdigit,isalpha

表头文件

#inlude<ctype.h>

定义函数

int ispunct(int c)

函数说明

检查参数c是否为标点符号或特殊符号。返回TRUE也就是代表参数c为非空格、非数字和非英文字母。

返回值

v若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/*列出字符串str中的标点符号或特殊符号*/
#include <ctype.h>
main()
{
char str[]="123c@ #FDsP[e?";
int i;
for(i=0;str[i]!=0;i++)
if(ispunct(str[i])) printf("%c\n",str[i]);
}

执行

v
@#[?

 

isupper(测试字符是否为大写英文字母)

相关函数

isalpha,islower

表头文件

#include<ctype.h>

定义函数

int isupper(int c)

函数说明

检查参数c是否为大写英文字母。

返回值

若参数c为大写英文字母,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/*找出字符串str中为大写英文字母的字符*/
#include <ctype.h>
main()
{
char str[]="123c@#FDsP[e?";
int i;
for(i=0;str[i]!=0;i++)
if(isupper(str[i])) printf("%c is an uppercase character\n",str[i]);
}

执行

F is an uppercase character
D is an uppercase character
P is an uppercase character

 

isxdigit(测试字符是否为16进制数字)

相关函数

isalnum,isdigit

表头文件

#include<ctype.h>

定义函数

int isxdigit (int c)

函数说明

检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。16进制数字:0123456789ABCDEF。

返回值

若参数c为16进制数字,则返回TRUE,否则返回NULL(0)。

附加说明

此为宏定义,非真正函数。

范例

/*找出字符串str中为十六进制数字的字符*/
#include <ctype.h>
main()
{
char str[]="123c@#FDsP[e?";
int i;
for(i=0;str[i]!=0;i++)
if(isxdigit(str[i])) printf("%c is a hexadecimal digits\n",str[i]);
}

执行

1 is a hexadecimal digits
2 is a hexadecimal digits
3 is a hexadecimal digits
c is a hexadecimal digits
F is a hexadecimal digits
D is a hexadecimal digits
e is a hexadecimal digits

 

2.小试牛刀:文档统计器的实现实现主要也是利用本文介绍的函数isalnum(),isalpha(),isdigit(),islower(),isupper()由于可能很多同学还没有接触过C语言文件IO的函数,所以我们使用字符串输入模拟从文本中读取。

#include <stdio.h> //gets(),printf()
#include <ctype.h>
/*isalnum(),isalpha(),isdigit(),islower(),isupper()*/
int main()
{
char buffer[1024]; //变量定义
int i = 0; //每一个类型的计数器
int iNum = 0;
int iLower = 0;
int iSupper = 0;
int iSpace = 0;
printf("please input string:"); gets(buffer); while(i <1024 && buffer[i] !='\0') //循环终止条件
{
if(isalnum(buffer[i]))
{
++iNum;
}
if(isspace(buffer[i]))
{
++iSpace;
}
if(islower(buffer[i]))
{
++iLower;
}
if(isupper(buffer[i]))
{
++iSupper;
printf("%c is supperchar \n",buffer[i]);
}
++i;
}
printf("char+number %d\nspace %d\nlowerchar %d\nsupperchar %d\n",
iNum,iSpace,iLower,iSupper);
return 0;
}

3. 各个函数在Unix/Linux平台的效果

在RHEL6上

在RHEL7上

在Solaris上

在MAC上

各个平台效果展示完毕。

对于字符的测试我们上述这些貌似函数的宏一般足以胜任,但是往往还有一些特殊要求的需求你自己做一些修改。

Unix/Linux环境C编程入门教程(25) C/C++字符测试那些事儿的更多相关文章

  1. Unix/Linux环境C编程入门教程(32) 环境变量那些事儿

    1. getenv() putenv()setenv()函数介绍 getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdli ...

  2. Unix/Linux环境C编程入门教程(19)Red Hat Entetprise Linux 7.0环境搭建

    位架构,包括英特尔X-86_64.Power和s390.动态定时能力将降低内核内部中断数量,Open vSwitch 2.0功能可调节虚拟机之间的流量.RHEL 7中默认的文件系统是XFS,包含了一个 ...

  3. Unix/Linux环境C编程入门教程(5) Red Hat Enterprise Linux(RHEL)环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 通过./a.out ./Y.out执行出结果,证明C++程序编译成功,也就说明li ...

  4. Unix/Linux环境C编程入门教程(4) Debian Linux环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 1.广义的Debian是指一个致力于创建自由操作系统的合作组织及其作品,由于Deb ...

  5. Unix/Linux环境C编程入门教程(3) Oracle Linux 环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 2010年9月,Oracle Enterprise Linux发布新版内核--Un ...

  6. Unix/Linux环境C编程入门教程(2) CentOS环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 本文就带大家来安装CentOS并且配置好C/C++开发环境,这是一款Linux. ...

  7. Unix/Linux环境C编程入门教程(1) Solaris 11 64bit环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 本文就带大家来安装Solaris 11 64位并且配置好C/C++开发环境 本文所 ...

  8. Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间

    1.问:知道程序运行时间我们可以做什么? 在<C++应用程序性能优化>一书中,如果大家读过相信大家一定对性能优化这一块非常上心,文中总是对优化前后的时间对比非常直观给我们一个感受. 那么我 ...

  9. Unix/Linux环境C编程入门教程(21) 各个系统HelloWorld跑起来效果如何?

    Unix/Linux家族人员众多,我们无法一一讲解如何配置环境. 本文选定我们在前面安装的RHEL6 RHEL7 MAC10.9.3 Solaris11如何跑起来helloworld RHEL 6 上 ...

随机推荐

  1. WPF笔记(1.3 属性元素)——Hello,WPF!

    原文:WPF笔记(1.3 属性元素)--Hello,WPF! 这一节中“属性元素”的概念可以用匪夷所思形容.1.WPF用标签元素实现对象建模,有两种:Control和Container,都用来装载内容 ...

  2. JavaScript加密解密7种方法总结分析

    原文地址:http://wenku.baidu.com/view/9048edee9e31433239689357.html 本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木 ...

  3. Google street、Google satellite 、百度地图Iframe切换桥接JS

    1.地图切换方法 注意:父页面访问Iframe页面JS方法需根据Iframe的名字来调用如:named "mapIfame" 即 mapIfame.window.iframeFun ...

  4. RBF径向基神经网络——乳腺癌医学诊断建模

    案例描述 近年来疾病早期诊断越来越受到医学专家的重视,从而产生了各种疾病诊断的新方法.乳癌最早的表现是患乳出现单发的.无痛性并呈进行性生长的小肿块.肿块位于外上象限最多见,其次是乳头.乳晕区和内上象限 ...

  5. 移除UIView上面的所有控件

    ;i<[view.subviews count];i++){ [ [ view.subviews objectAtindex:i] removeFromsuperview]; }

  6. Stones(优先队列)

    Stones Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Subm ...

  7. C# Lazy<T>(转)

    本文来自:http://www.cnblogs.com/zhangpengshou/archive/2012/12/10/2811765.html .NET Framework 4 在一次次跳票中终于 ...

  8. Android手机APN设置(中国移动 联通3G 电信天翼),解决不能上网的问题

    中国移动 第一步,设置CMNET上网 新建APN 1.名称:cmnet 2.APN:cmnet 3.APN类型:default 就仅仅填写上面3个选项,其它都是默认,不用填写. 第二步,设置彩信 新建 ...

  9. ARM9嵌入式学习笔记(2)-Vi使用

    ARM9嵌入式学习笔记(2) 实验1-1-3 Vi使用 vi创建文件vi hello.c:vi smb.conf-打开文件smb.conf i键-插入模式:esc键-命令行模式::-底行模式: 底行模 ...

  10. UBUNTU系统root帐号解锁

    UBUNTU系统启动时默认以安装系统时输入的用户名进行登录.如:以非root帐号rusky登录系统,当我们做某些操作时系统提示需要输入root密码.但我们并没有设置过root密码.此时,可按如下操作为 ...