【C语言】判断字符类型的三种方法

04-06 1045阅读

🦄个人主页:修修修也

🎏所属专栏:C语言

⚙️操作环境:Visual Studio 2022

【C语言】判断字符类型的三种方法


目录

一.字符的类型分类

1.ASCII的定义:

 2.ASCII的产生原因是:

3.ASCII的内容:

二.字符类型判断相关库函数

1.isdigit(),用于判断字符是否为数字。

2. isalpha(),用于判断字符是否为字母。

3. isalnum(),用于判断字符是否为数字或字母。

4. isspace(),用于判断字符是否为空格字符。

5. isupper()和 islower(),分别用于判断字符是否为大写字母和小写字母。

6. iscntrl(),用于判断字符是否为控制字符。

7. isprint(),用于判断字符是否为可打印字符。

8. ispunct(),用于判断字符是否为标点符号。

三.不使用库函数判断字符类型

1.ASCII码值判断法

判断是否是'a'字符:

判断是否是数字字符:

判断是否是小写字母字符:

判断是否是大写字母字符:

判断是否是字母字符:

判断是否是数字字符或字母字符:

判断是否为空格字符:

判断是否为控制字符:

判断是否为可打印字符:

判断是否为标点符号字符:

2.字符直接判断法

判断是否是'a'字符:

判断是否是数字字符:

判断是否是小写字母字符:

判断是否是大写字母字符:

判断是否是字母字符:

判断是否是数字字符或字母字符:

判断是否为空格字符:

判断是否为控制字符:

判断是否为可打印字符:

判断是否为标点符号字符:


一.字符的类型分类

1.ASCII的定义:

先来看看百度百科对ASCII的定义:

【C语言】判断字符类型的三种方法


 2.ASCII的产生原因是:

       在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。


3.ASCII的内容:

【C语言】判断字符类型的三种方法

根据ASCII码,我们大致可以将字符分为非打印控制字符和打印字符,其中打印字符又能细分为:标点符号,数字,大写字母,小写字母......等.

既然有分类,那么也就有分类统计的需求,接下来我们来学习一下该如何判断字符的类型。


二.字符类型判断相关库函数

1.isdigit(),用于判断字符是否为数字。

先来看cplusplus网站官方对isdigit()函数的解释:

【C语言】判断字符类型的三种方法

注意,isdigit()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看isdigit()函数的原型:

int isdigit ( int c );

综上可知,当你向isdigit()函数传输一个字符数据(实际是它的ASCII值)时,它会判断其是否是十进制数字字符,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

注意,十进制数字字符在ASCII码表中的对应值为:48~57。

我们在编译器中测试使用一下该函数:

【C语言】判断字符类型的三种方法


2. isalpha(),用于判断字符是否为字母。

先来看cplusplus网站官方对isalpha()函数的解释:

【C语言】判断字符类型的三种方法

注意isalpha()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看isalpha()函数的原型:

int isalpha ( int c );

综上可知,当你向isalpha()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是字母字符,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

注意,字母字符在ASCII码表中的对应值为:大写字符65~90;小写字符97~122。

我们试着在编译器中测试一下该函数:

【C语言】判断字符类型的三种方法


3. isalnum(),用于判断字符是否为数字或字母。

先来看cplusplus网站官方对isalnum()函数的解释:

【C语言】判断字符类型的三种方法

isalnum()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看isalnum()函数的原型:

int isalnum ( int c );

综上可知,当你向isalnum()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是字母或数字字符,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

注意,十进制数字字符和字母字符在ASCII码表中的对应值为:十进制数字48~57;大写字母65~90;小写字母97~122。

我们试着在编译器中测试一下该函数:

【C语言】判断字符类型的三种方法


4. isspace(),用于判断字符是否为空格字符。

先来看cplusplus网站官方对isspace()函数的解释:

【C语言】判断字符类型的三种方法

isspace()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看isspace()函数的原型:

int isspace ( int c );

综上可知,当你向isspace()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是空格字符,包括空格、制表符、换行符等,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

注意,空格字符是指:SPC(空格符),TAB(水平制表符),LF(换行/新行),VT(竖直制表符),FF(换页/新页),CR(回车)。

它们的ASCII码值分别为:

空格字符及其ASCII码值
代码含义ASCII码值
SPC空格符32
TAB水平制表符9
LF换行/新行10
VT竖直制表符11
FF换页/新页12
CR回车13

我们试着在编译器中测试一下该函数:

【C语言】判断字符类型的三种方法


5. isupper()和 islower(),分别用于判断字符是否为大写字母和小写字母。

我们先来看cplusplus网站官方对isupper()函数的解释:

【C语言】判断字符类型的三种方法

isupper()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看isupper()函数的原型:

int isupper ( int c );

综上可知,当你向isupper()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是大写字母,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

注意,大写字母字符在ASCII码表中的对应值为65~90。


接下来再来看islower()函数:

【C语言】判断字符类型的三种方法

islower()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看islower()函数的原型:

int islower ( int c );

综上可知,当你向islower()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是小写字母,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

注意,小写字母字符在ASCII码表中的对应值为:97~122。


6. iscntrl(),用于判断字符是否为控制字符。

先来看cplusplus网站官方对iscntrl()函数的解释:

【C语言】判断字符类型的三种方法

iscntrl()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看iscntrl()函数的原型:

int iscntrl ( int c );

综上可知,当你向iscntrl()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是控制字符,包括回车符、换行符、制表符等,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

而控制字符包括下表中的所有字符,即从'NUL'到'US'。并且还包含ASCII码值为127的'DEL'字符。

【C语言】判断字符类型的三种方法

注意,控制字符在ASCII码表中的对应值为:0~31;以及127。


7. isprint(),用于判断字符是否为可打印字符。

先来看cplusplus网站官方对isprint()函数的解释:

【C语言】判断字符类型的三种方法

isprint()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看isprint()函数的原型:

int isprint ( int c );

综上可知,当你向isprint()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是可打印字符,包括字母、数字、标点符号等,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

可打印字符包括下表中的所有字符,即从 '  '(空格)到 ‘~’(波浪号)。

注意,可打印字符在ASCII码表中的对应值为:32~126。

【C语言】判断字符类型的三种方法


8. ispunct(),用于判断字符是否为标点符号。

先来看cplusplus网站官方对ispunct()函数的解释:

【C语言】判断字符类型的三种方法

ispunct()函数的原型定义在头文件中,因此使用前需要包含该头文件。

下面我们来看ispunct()函数的原型:

int ispunct ( int c );

综上可知,当你向ispunct()函数传输一个字符(实际是它的ASCII值)时,它会判断其是否是标点符号字符,如果是,它会返回给你一个非零的数,如果不是,则会返回0。

ispunct()函数判断的标点字符包括ASCII码表中除了空格、数字和字母以外的所有字符,如逗号、句号、问号、感叹号、分号、冒号、括号、引号等等。

具体来说,它包括ASCII码表中的33-47、58-64、91-96、123-126这些字符。


 三.不使用库函数判断字符类型

1.ASCII码值判断法

因为我们知道,char类型的字符数据存储的字符信息实际是该字符的ASCII码值,因此当我们判断其是否是某一字符或某一类字符时,只需判断它和标准ASCII码中的值是否相等即可,而当碰到需要判断某一类字符时,我们也可以巧妙的使用他们所处的ASCII码值区间来判断

如:

判断是否是'a'字符:

int my_move(char ch)
{
    if(ch==97)
        return 1;
    else
        return 0;
}

判断是否是数字字符:

int my_isdigit(char ch)
{
    if(ch>=48&&ch=97&&ch=65&&ch=65&&ch=97&&ch=48&&ch=97&&ch=65&&ch=9&&ch=0&&ch=32&&ch=33&&ch=58&&ch=91&&ch=123&&ch='0'&&ch='a'&&ch='A'&&ch='A'&&ch='a'&&ch='0'&&ch='a'&&ch='A'&&ch='\t'&&ch ='\0'&&ch=' '&&ch='!'&&ch=':'&&ch='['&&ch='{'&&ch
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]