C语言入门9-1-分类函数
分类函数
ASCII字符可以分为英文字母、数字、控制字符、空白字符、大小写字母以及标点符号,分类是指对字符进行属性判定,判断字符属于哪些范畴,这些属性的判定在程序中非常常见,尤其是通信协议的字符处理部分更是必不可少。
1 字母数字
本节介绍判定字符是否是字母或者数字的相关分类函数,函数所在头文件为ctype.h,参数为需要判断的字符,下面不再作特别说明。
1.1 判断字符是否为英文字母isalpha()
【函数原型】int isalpha(int c)
【功能讲解】判断字符是否是英文字母,如果字符是英文字符则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程能判断用户输入字符是不是英文字母。如果输入的是英文字母则显示出来,否则提示不是英文字母,直到输入.结束本例子
/*函数isalpha()示例*/
#include <ctype.h>/*函数isalpha()所在头文件
int main(void)
{
char ch;
do
{
ch = getch();/*获取键盘输入字符*/
if(isalpha(ch))/*判定字符是不是英文字母*/
{
printf("您输入的是英文字母%c\n",ch);
}
else
{
printf("您输入的不是英文字母!\n");
}
}
while(ch != '.');/*遇到结束字符则结束本程序*/
return ;
}
【运行结果】
输入字符a则显示:您输入的是英文字母a
输入字符f则显示:您输入的是英文字母f
输入字符F则显示:您输入的是英文字母F
输入字符.则显示:您输入的不是英文字母!
【实例讲解】本例使用简单的do…while循环语句等待用户输入字符,当用户输入后马上调用isalpha()检测是否是英文字母,给出相应的提示信息,直到输入‘.’结束本例子。
1.2 判断字符是否为数字isdigit()
【函数原型】int isdigit(int c)
【功能讲解】判断字符是否是数字,如果字符是数字则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程判断数组中哪些字符是数字字符,不是数字的不做任何处理,如果是数字字符分行显示到屏幕。
/*函数isdigit()示例*/
#include <ctype.h> /*函数isdigit()所在的头文件*/
int main()
{
char str[]="123kal*(0-#"; /*任意初始化一个字符数组,包括数字*/
int i;
/*使用for循环逐个检测*/
for (i=;str[i]!=;i++)
{
if(isdigit(str[i])) /*判断是否是数字*/
{
printf("%c 是数字\n",str[i]); /*输出数字字符*/
}
}
return ;
}
【运行结果】
1 是数字
2 是数字
3 是数字
0 是数字
【实例讲解】本例首先是随意初始化一个字符数组,里面填写入数字、标点符号、英文字母等,然后是否for循环逐个调用isdigit()判断是否是数字,程序会列出数组中所有的数字字符。
1.3 判断字符是否为英文字母或数字isalnum()
【函数原型】int isalnum(int c)
【功能讲解】判断字符是否是英文字母或者数字,如果字符是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程是逐个判断字符数组中所有的字符,如果是数字或者英文字母,则显示到屏幕,如果不是,则不作任何处理。
/*函数isalnum()示例*/
#include <ctype.h> /*函数isalnum()所在的头文件*/
int main()
{
char str[]="123kal*(0-#10"; /*初始化一个包含数字的字符数组*/
int i;
/*循环判定*/
for (i=;str[i]!=;i++)
{
if(isalnum(str[i])) /*判断是字母或者数字*/
{
printf("%c ",str[i]); /*把相应的字符显示出来*/
}
}
printf("是英文字母或数字\n");
return ;
}
【运行结果】
123kal010 是英文字母和数字
【实例讲解】本例首先是随意初始化一个字符数组,里面填写入英文字母和数字,当然也包含其他字符,然后是否for循环逐个调用isalnum()判断是否是英文字母或数字,程序会列出数组中所有的判断为真的字符,在循环结束后再显示一段说明文字,告诉用户那些就是英文字符和数字。
1.4 判断字符是否为小写字母islower()
【函数原型】int islower(int c)
【功能讲解】判断字符是否是小写字母,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程能判定用户输入的字符是否是小写字母,运行的效果是只显示用户输入的小写字母,输入其他字符不显示,按Esc结束程序。
/*函数islower()示例*/
#include<ctype.h> /*函数islower()所在头文件*/
int main(void)
{
char ch; /*定义字符变量*/
do//循环
{
ch = getch(); /*获取键盘输入*/
if(islower(ch)) /*判断是否是小写字母*/
{
printf("%c\n",ch); /*显示出字符*/
}
}
while(ch != ); /*遇到Esc退出本程序*/
return ; /*函数返回*/
}
【运行结果】
输入1:无显示
输入7:无显示
输入A:无显示
输入 a: a
输入g: g
【实例讲解】例子中使用do…while循环语句检测输入的字符是不是小写字母,如果是则显示出来,不是小写字母的没做处理,就像是用户不能输入小写字母以外的字符一样。
1.5 判断字符是否为大写字母isupper()
【函数原型】int isupper(int c)
【功能讲解】判断字符是否是大写字母,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程能判定用户输入的字符是否是大写字母,运行的效果是只显示用户输入的大写字母,输入其他字符不显示,按Esc结束程序。
/*函数isupper()示例*/
#include<ctype.h> /*函数isupper()所在头文件*/
int main(void)
{
char ch; /*定义字符变量*/
do /*循环*/
{
ch = getch(); /*获取键盘输入*/
if(isupper(ch)) /*判断是否是大写字母*/
{
printf("%c\n",ch); /*显示出字符*/
}
}
while(ch != ); /*遇到Esc退出本程序*/
return ;/*函数返回*/
}
【运行结果】
输入1:无显示
输入7:无显示
输入A:A
输入 a:无显示
输入g: 无显示
【实例讲解】例子中使用do…while循环语句检测输入的字符是不是大写字母,如果是则显示出来,不是大写字母的没做处理,就像是用户不能输入大写字母以外的字符一样。
2 字符
本节介绍如何使用函数判定字符是否是ASCII码、普通控制字符、标点符号、可打印、空白字符(包括空格、水平制表符、回车符、走纸换行、垂直制表符以及换行符)。
2.1 判断字符是否为ASCII码isascii()
【函数原型】int isascii(int c)
【功能讲解】判断字符是否是ASCII码,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程能判定用户输入的是否是ASCII码,并显示出其对应的字符和ASCII码值,按Esc结束程序。
/*函数isascii()示例*/
#include<ctype.h>//函数isascii()所在头文件
int main(void)
{
/*定义字符变量*/
char ch;
do/*循环*/
{
/*获取键盘输入*/
ch = getch();
/*判断是否是ASCII码*/
if(isascii(ch))
{
/*显示出字符和对应的ASCII值*/
printf("%c 是ASCII码,对应数值为%d\n",ch,ch);
}
}
/*遇到Esc退出本程序*/
while(ch != );
/*函数返回*/
return ;
}
【运行结果】
输入字符Q显示:Q是ASCII码,对应的数值为81
输入字符q显示:q是ASCII码,对应的数值为113
输入字符a显示:a是ASCII码,对应的数值为97
输入字符2显示:2是ASCII码,对应的数值为50
输入字符3显示:3是ASCII码,对应的数值为51
【实例讲解】ASCII码是美国标准信息交换码(American Standard Code for Information Interchange),字母和各种字符必须按照特定的规则用二进制编码才能在计算机中表示。编码方式可以有很多种,ASCII码是其中最常见的一种。标准ASCII码用七位二进制编码,有128个。例子使用do…while循环检测每一个输入的字符,如果是ASCII码则显示出对应的数值,直到遇到按键盘“ESC”退出本程序。
2.2 判断字符是否为控制字符iscntrl()
【函数原型】int iscntrl(int c)
【功能讲解】判断字符是否是控制字符,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】因为控制字符一般是不可显示的,所以使用控制字符的ASCII码值初始化一个数组,判定该码值对应的字符是否是控制字符并显示出来。
/*函数iscntrl()示例
判定字符是否是控制字符并显示出来。
*/
#include<ctype.h>/*函数iscntrl()所在头文件*/
int main(void)
{
/*定义字符变量*/
char ch[] = {0x00,0x01,0x1f,0x7f};
/*循环*/
int i = ;
for(i = ;i<;i++)
{
/*判断是否是控制码*/
if(iscntrl(ch[i]))
{
/*显示出字符*/
printf("%x 是控制字符\n",ch[i]);
}
else
{
printf("%x 不是控制字符\n",ch[i]);
}
}
/*函数返回*/
return ;
}
【运行结果】
0 是控制字符
1 是控制字符
1f 是控制字符
7f 是控制字符
【实例讲解】控制字符是表示某一控制功能的字符,一般出现在特定的信息文本中。字符数值在0x00-0x1f之间,0x7f也是。本程序就是随意在这些数值中挑选几个用iscntrl()判定,如果你调试本例子可以自选数值试验。
2.3 判断字符是否为可打印字符(不含空格)isgraph()
【函数原型】int isgraph(int c)
【功能讲解】判断字符是否是不为空格的可打印字符,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】判断字符数组中哪些字符是否是不为空格的可打印字符,如果是则显示该字符可打印,否则显示该字符不可打印。
/*函数isgraph()示例
判定字符是否是控制字符(不含空格)并显示出来。
*/
#include<ctype.h>/*函数isgraph()所在头文件*/
int main(void)
{
/*定义字符变量*/
char ch[] = "&^d 45";
/*循环*/
int i = ;
for(i = ;ch[i]!=;i++)
{
/*判断是否是可打印字符(不含空格)*/
if(isgraph(ch[i]))
{
/*显示出字符*/
printf("%c 是可打印字符\n",ch[i]);
}
else
{
printf("%c 不是可打印字符\n",ch[i]);
}
}
/*函数返回*/
return ;
}
【运行结果】
& 是可打印字符
^ 是可打印字符
d 是可打印字符
不是可打印字符
4 是可打印字符
5 是可打印字符
【实例讲解】基本的ASCII字符集共有128个字符,其中有96个是可打印的,包括字母、数字、标点符号等,其他的是控制字符。本例子使用的函数即是判断字符是否是(不包含空格)可打印字符,看运行结果是不是跟你想的一样。
2.4 判断字符是否为可打印字符(含空格)isprint()
【函数原型】int isprint(int c)
【功能讲解】判断字符是否是的可打印字符,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】判断哪些字符是否是(含空格)可打印字符。
/*函数isprint()示例
判定字符是否是控制字符(含空格)并显示出来。
*/
#include<ctype.h>
int main(void)
{
/*定义字符变量*/
int ch[] = {'a',' ',0x30,0x7f};
/*循环*/
int i = ;
for(i = ;i<;i++)
{
/*判断是否是可打印字符(含空格)*/
if(isprint(ch[i]))
{
/*显示出字符*/
printf("%c 是可打印字符\n",ch[i]);
}
}
/*函数返回*/
return ;
}
【运行结果】
a 是可打印字符
0 是可打印字符
【实例讲解】基本的ASCII字符集共有128个字符,其中有96个是可打印的,包括字母、数字、标点符号等,其他的是控制字符。本例子使用的函数即是判断字符是否是可打印字符,看运行结果是不是跟你想的一样。
2.5 判断字符是否为标点符号ispunct()
【函数原型】int ispunct(int c)
【功能讲解】判断字符是否是标点符号,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程允许用户任意输入字符,判断其是否是标点符号,如果是则显示该字符是标点符号,否则显示该字符不是标点符号。
/*函数ispunch()示例*/
#include<ctype.h>
int main(void)
{
/*定义字符变量*/
char ch;
do/*循环*/
{
/*获取键盘输入*/
ch = getch();
/*判断是否是标点符号*/
if(ispunct(ch))
{
/*显示出字符*/
printf("%c 是标点符号\n",ch);
}
else
{
/*显示出字符*/
printf("%c 不是标点符号\n",ch);
}
}
/*遇到Esc退出本程序*/
while(ch != );
/*函数返回*/
return ;
}
【运行结果】
输入a显示:a不是标点符号
输入5显示:5不是标点符号
输入`显示:`是标点符号
输入!显示:!是标点符号
【实例讲解】标点符号是书面上用于标明句读和语气的符号。例子使用do…while循环检测键盘输入的字符是不是标点符号,并显示出来,直到遇到ESC退出程序。
2.6 判断字符是否为空白字符isspace()
【函数原型】int ispunct(int c)
【功能讲解】判断字符是否是空白字符,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】分析一个带空白字符的字符串,逐个检测字符是不是空白字符,如果不是则显示出来,否则不做处理。
/*函数isspace()示例*/
#include <ctype.h>
int main(void)
{
/*字符串包含空白字符 \t表示水平制表符,\r表示回车 \n换行*/
char str[] = "I will \t be a \r better man!\n";
int i=;
/*逐个字符检测是否是空白字符*/
for(i = ;i<strlen(str);i++)
{
if(isspace(str[i]))
{
/*空白字符不显示*/
}
else
{
/*显示非空白字符*/
printf("%c",str[i]);
}
}
/*输出一个换行符号,输出个换行符号只是为了运行结果干净整洁,无其它意思*/
printf("\n");
return ;
}
【运行结果】
Iwillbeabeterrman!
【实例讲解】空白字符包括空格、水平制表符、垂直制表符、换页、回车和换行等等,本例首先定义一个字符串,故意在其中包含空白字符,然后通过for循环逐个字符检测,如果不是空白字符则显示出来,最后显示的就是除去空白字符以后的字符了。
2.7 判断字符是否为16进制字符isxdigit()
【函数原型】int isxdigit(int c)
【功能讲解】判断字符是否是16进制字符,如果是则返回非零值,否则返回零。
【参数说明】需要判断的字符。
【程序示例】本例程允许用户任意输入一个字符,使用本函数判断是不是16进制字符,显示出对应的提示信息,在最后给出了16进制包含哪里字符。
/*函数isxdigit()示例*/
#include<ctype.h>/*函数isxdigit()所在头文件*/
#include<stdio.h>
int main(void)
{
char ch; /*定义字符变量*/
ch = getch();/*获取键盘输入*/
while(ch != )/*循环*/
{
if(isxdigit(ch)) /*判断是否是16进制符号*/
{
printf("%c 是16进制字符\n",ch); /*显示出字符*/
}
else
{
printf("%c 不是16进制字符\n",ch); /*显示出字符*/
}
ch = getch();/*获取键盘输入*/
}
//while(ch != 27); /*遇到Esc退出本程序*/
printf("16进制字符包括:0123456789ABCDEF\n"); /*显示出字符*/
return ; /*函数返回*/
}
【运行结果】
输入字符1显示:1是16进制字符
输入字符9显示:9是16进制字符
输入字符A显示:A是16进制字符
输入字符F显示:F是16进制字符
输入字符Q显示:Q不是16进制字符
输入字符L显示:L不是16进制字符
输入ESC显示:16进制字符包括:0123456789ABCDEF
【实例讲解】16进制是计算机中数据的一种表示方法,它由0-9以及A-F组成,我们日常使用的数据是10进制的,逢10进1,而16进制则是逢16进1。这个例子跟之前的基本一样,使用while循环获取用户输入的字符,然后使用isxdigit()判断是不是16进制字符,以按下ESC键结束本程序。
这么多只是C整个库的一部分,需要全部记忆吗?现在当然不用,用到哪里去查就行了。
C语言入门9-1-分类函数的更多相关文章
- Go语言入门教程(十)之函数
Hello 各位小伙伴大家好,我是小栈君,假期一眨眼就过去了.不知道大家玩的是否开心呢? 上次我们讲到了关于Go语言的流程控制,小栈君也希望小伙伴跟着小栈君一步一个脚印的敲一下代码,相互进步.本期我们 ...
- 小学生都看得懂的C语言入门(3): 数组与函数
#include <stdio.h> int main() { int x; ; ; scanf("%d",&x){ sum+=x; cnt++; scanf( ...
- C语言入门:05.scanf函数
一.变量的内存分析 1.字节和地址 为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”. (1)内存以“字节为单位”
- go语言入门(4)函数
1,函数的定义格式 函数构成代码执行的逻辑结构.在Go语言中,函数的基本组成为:关键字func.函数名.参数列表.返回值.函数体和返回语句. Go 语言函数定义格式如下 func FuncName(/ ...
- 小学生都看得懂的C语言入门(4): 数组与函数
// 之前判断素数, 只需要到sqrt(x)即可,//更加简单的, 判断能够比已知的小于x的素数整除, 运行更快 #include <stdio.h> // 之前判断素数, 只需要到sqr ...
- R语言入门视频笔记--6--R函数之cat、format、switch函数
一.cat 猫 怎么就变成一个输出函数了呢? cat 一个输出函数,功能和print有相同之处 我们一起比较看看 1.cat(“hellow world”)或cat('hellow world') ...
- C语言入门(7)——自定义函数
C源程序是由函数组成的.虽然在C语言入门系列前面几篇的程序中大都只有一个主函数main(),但实用程序往往由多个函数组成.函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能.C语言中的函数相 ...
- 【C语言入门教程】1.2 函数库 和 链接
程序员可以不需要从头开始设计每一个函数,完成用C语言命令所实现的函数非常罕见.因为所有的C语言编辑器都提供能完成各种常见任务函数,如printf()函数等.C语言编译器的实现者已经编写了大部分常见的通 ...
- 【南阳OJ分类之语言入门】80题题目+AC代码汇总
小技巧:本文之前由csdn自动生成了一个目录,不必下拉一个一个去找,可通过目录标题直接定位. 本文转载自本人的csdn博客,复制过来的,排版就不弄了,欢迎转载. 声明: 题目部分皆为南阳OJ题目. 代 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(7)|函数Functions与闭包Closure]
[易学易懂系列|rustlang语言|零基础|快速入门|(7)函数Functions与闭包Closure] 有意思的基础知识 函数Functions与闭包Closure 我们今天再来看看函数. 在Ru ...
随机推荐
- Python中的参数传递问题
首先需要说明python中元组,列表,字典的区别. 列表: 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单. 例如:lst = ['arwen',123] 向list中添加项有两种方法:ap ...
- spring+rabbitmq+stomp搭建websocket消息推送(非spring boot方式)
前言: 两年前做过spring+activemq+stomp的ws推送,那个做起来很简单,但现在公司用的mq中间件是rabbitmq,因此需要通过rabbitmq去做ws通信.仔细搜了搜百度/谷歌,网 ...
- 关于JDK和JRE的一些总结
一.关于JDK和JRE JDK (Java Development Kit)即java开发工具,包括JER及代码编译器(javac).文档注释器(JavaDoc).代码调试器(Java Debugge ...
- SYN591-B型 转速表
SYN591-B型 转速表 光电转速表数显转速表智能转速表使用说明视频链接: http://www.syn029.com/h-pd-249-0_310_44_-1.html 请将此链接复制到浏览 ...
- SYN2306A型 GPS北斗双模授时板
SYN2306A型 GPS北斗双模授时板 北斗gps时钟北斗授时设备北斗时钟同步系统使用说明视频链接: http://www.syn029.com/h-pd-211-0_310_36_-1.html ...
- kafka笔记6
我们讨论可靠性时,一般使用保证这个词,它是确保系统在各种不同的环境下能够发生一致的行为.Kafka可以在哪些方面作出保证呢? 1.Kafka可以保证分区消息的顺序 2.只有消息被写入分区的所有同步副本 ...
- 使用豆瓣的pip源安装python模块
1.指定豆瓣pip源安装Django pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com ...
- Programming In Lua 第三章
1, 2, 3, 4, 5,lua中,只有false和nil为假,0和空字符串为真. 6, 7,
- Python开发【第九篇】: 并发编程
内容概要 操作系统介绍 进程 线程 协程 二. 进程 python并发编程之多进程理论部分 在python程序中的进程操作 运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...
- 简单的python爬虫实例
目标网站:https://www.quanjing.com/category/1286521/2.html 爬取搜索出来的所有“中东人”的图片: 先看一下源代码,找到存放图片链接的地方,在源代码最下面 ...