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

这篇具有很好参考价值的文章主要介绍了【C语言】判断字符类型的三种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🦄个人主页:修修修也

🎏所属专栏:C语言

⚙️操作环境:Visual Studio 2022

c语言判断字符类型,C语言,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语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符


 2.ASCII的产生原因是:

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


3.ASCII的内容:

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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


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

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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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

int isdigit ( int c );

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

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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符


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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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

int isalpha ( int c );

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

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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符


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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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

int isalnum ( int c );

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

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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符


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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

下面我们来看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语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符


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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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

int isupper ( int c );

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

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


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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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

int islower ( int c );

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

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


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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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

int iscntrl ( int c );

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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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


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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

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

int isprint ( int c );

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

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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符


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

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

c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符

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

下面我们来看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<=57)
        return 1;
    else
        return 0;
}

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

int my_islower(char ch)
{
    if(ch>=97&&ch<=122)
        return 1;
    else
        return 0;
}

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

int my_isupper(char ch)
{
    if(ch>=65&&ch<=90)
        return 1;
    else
        return 0;
}

判断是否是字母字符:

int my_isalphA(char ch)
{
    if((ch>=65&&ch<=90)||(ch>=97&&ch<=122))
        return 1;
    else
        return 0;
}

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

int my_isalnum(char ch)
{
    if((ch>=48&&ch<=57)||(ch>=97&&ch<=122)||(ch>=65&&ch<=90))
        return 1;
    else
        return 0;
}

判断是否为空格字符:

int my_space(char ch)
{
    if((ch>=9&&ch<=13)||(ch==32))
        return 1;
    else
        return 0;
}

判断是否为控制字符:

int my_cntrl(char ch)
{
    if((ch>=0&&ch<=31)||(ch==127))
        return 1;
    else
        return 0;
}

判断是否为可打印字符:

int my_isprint(char ch)
{
    if(ch>=32&&ch<=126)
        return 1;
    else
        return 0;
}

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

int my_punct(char ch)
{
    if((ch>=33&&ch<=47)||(ch>=58&&ch<=64)||(ch>=91&&ch<=96)||(ch>=123&&ch<=126))
        return 1;
    else
        return 0;
}

2.字符直接判断法

但有时候,我们可能记不太清楚字符的ASCII码值了,但我们同样可以直接使用字符本身进行判断.

但需要特别注意,使用字符本身判断时,必须用单引号将字符标注起来,以便编译器将其识别为一个字符,否则可能会导致出错。

同时有些没法直接在C语言中表示的控制字符,有的需要借助转义字符进行判断,有的则只能使用ASCII码值判断

判断是否是'a'字符:

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

函数名为my_move,作用是判断一个字符是否为字母a

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是字母a则返回1,否则返回0。

函数的实现是通过判断字符的值是否等于字母a的ASCII码值,因为字母a的ASCII码值为97,所以如果参数ch的值等于97,即为字母a,则返回1,否则返回0。


判断是否是数字字符:

int my_isdigit(char ch)
{
    if(ch>='0'&&ch<='9')
        return 1;
    else
        return 0;
}

函数名为my_isdigit,作用是判断一个字符是否为数字字符

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是数字字符则返回1,否则返回0。

函数的实现是通过判断字符的ASCII码值,如果该字符在0到9之间,则返回1,否则返回0。


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

int my_islower(char ch)
{
    if(ch>='a'&&ch<='z')
        return 1;
    else
        return 0;
}

函数名为my_islower,作用是判断一个字符是否为小写字母

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是小写字母则返回1,否则返回0

函数的实现是通过判断字符的ASCII码值,如果该字符的ASCII码值在小写字母的ASCII码值范围内,则返回1,否则返回0。其中,小写字母的ASCII码值范围是从97(字符'a')到122(字符'z')。


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

int my_isupper(char ch)
{
    if(ch>='A'&&ch<='Z')
        return 1;
    else
        return 0;
}

函数名为my_isupper,作用是判断一个字符是否为大写字母

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是大写字母则返回1,否则返回0

函数的实现是通过判断字符的ASCII码值是否在大写字母的ASCII码值范围内,如果是,则返回1,否则返回0。


判断是否是字母字符:

int my_isalphA(char ch)
{
    if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
        return 1;
    else
        return 0;
}

函数名为my_isalpha,作用是判断一个字符是否为字母

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是字母则返回1,否则返回0

函数的实现是通过判断字符的ASCII码值,如果该字符的ASCII码值在大写字母或小写字母的范围内,则返回1,否则返回0。


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

int my_isalnum(char ch)
{
    if((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
        return 1;
    else
        return 0;
}

函数名为my_isalnum,作用是判断一个字符是否为字母或数字字符

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是字母或数字字符则返回1,否则返回0。

函数的实现是通过判断字符的ASCII码值,如果字符的ASCII码值在数字0到9的ASCII码值范围内,则该字符是数字字符,返回1;
如果字符的ASCII码值在小写字母a到z的ASCII码值范围内或者在大写字母A到Z的ASCII码值范围内,则该字符是字母字符,返回1;
否则返回0,表示该字符既不是字母字符也不是数字字符。


判断是否为空格字符:

int my_space(char ch)
{
    if ((ch >='\t'&&ch <= '\n') || (ch == ' '))
        return 1;
    else
        return 0;
}

函数名为my_space,作用是判断一个字符是否为空格或者制表符

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是空格或者制表符则返回1,否则返回0。

函数的实现是通过判断字符的ASCII码值,如果字符的ASCII码值在水平制表符(\t)到换行符(\n)的ASCII码值范围内,或者该字符是空格(ASCII码值为32),则该字符是空格或者制表符,返回1;
否则,该字符不是空格或者制表符,返回0。


判断是否为控制字符:

int my_cntrl(char ch)
{
    if((ch>='\0'&&ch<='\x1F')||(ch=='\x7F'))
        return 1;
    else
        return 0;
}

函数名为my_cntrl,作用是判断一个字符是否为控制字符

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是控制字符则返回1,否则返回0。

函数的实现是通过判断字符的ASCII码值,如果该字符的ASCII码值在0到31之间(包括0和31),或者等于127(DEL字符),则认为该字符是控制字符,返回1;否则返回0。


判断是否为可打印字符:

int my_isprint(char ch)
{
    if(ch>=' '&&ch<='~')
        return 1;
    else
        return 0;
}

函数名为my_isprint,作用是判断一个字符是否为可打印字符

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是可打印字符则返回1,否则返回0

该函数的实现是通过判断字符的ASCII码值,ASCII码值在32~126之间的字符被视为可打印字符。

如果字符的ASCII码值在这个范围内,即该字符是可打印字符,则函数返回1;

否则,即该字符不是可打印字符,则函数返回0。


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

int my_punct(char ch)
{
    if((ch>='!'&&ch<='/')||(ch>=':'&&ch<='@')||(ch>='['&&ch<='`')||(ch>='{'&&ch<='~'))
        return 1;
    else
        return 0;
}

函数名为my_punct,作用是判断一个字符是否为标点符号

函数接受一个字符类型的参数ch,返回一个整型值,如果该字符是标点符号则返回1,否则返回0

函数的实现是通过判断字符的ASCII码值,如果该字符是ASCII码表中四个范围内的字符之一,则返回1,否则返回0。

具体来说,这个函数会判断字符是否在以下四个范围内:

  • ASCII码表中的感叹号到斜杠之间的字符,即'!'到'/';
  • ASCII码表中的冒号到@之间的字符,即':'到'@';
  • ASCII码表中的左方括号到反引号之间的字符,即'['到'`';
  • ASCII码表中的左花括号到波浪号之间的字符,即'{'到'~'。

如果字符属于以上任意一个范围,则说明它是标点符号,函数返回1;否则返回0。


结语

希望这篇字符类型的三种判断方法的介绍到能对大家有所帮助,欢迎大佬们留言或私信与我交流.

学海漫浩浩,我亦是行人!大家一起学习,一起进步!

相关内容推荐:

【C语言】字母转换大小写的三种方法

【C语言】qsort()函数详解:能给万物排序的神奇函数

【C语言】整形数据和浮点型数据在内存中的存储

【C语言】结构体的大小是如何计算的(结构体对齐)


c语言判断字符类型,C语言,c语言,开发语言,学习,笔记,字符串,字符文章来源地址https://www.toymoban.com/news/detail-735596.html


到了这里,关于【C语言】判断字符类型的三种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++中求string类型字符串长度的三种方法

    length()函数是string的内置成员方,用于返回string类型字符串的实际长度。 length()函数声明: // 返回 string 长度,单位字节 size_t length() const noexcept; 示例1: size()函数与length()一样,没有本质区别。string类刚开始只有length()函数,延续了C语言的风格。引入STL之后,为了兼容又加入

    2024年02月07日
    浏览(53)
  • C语言判断一个数是否为素数的三种方法(详细)

             今天我们来使用C语言来实现判断一个数是否为素数,首先我们需要了解到素数的概念,素数就是只能被1和它本身整除的数。             这是第一种代码,我们来分析一下,首先创建变量i和n,这里我们i用于循环,n用来存放我们输入的数字。之后我们设置一个

    2024年04月25日
    浏览(45)
  • C语言if判断语句的三种用法

    一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 C 语言中 if 语句的语法: 如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。 C 语言把任何非零和非空的值假定为 true,把零或 n

    2024年02月06日
    浏览(53)
  • 使用java判断质数的三种方法

    方法一:质数只能被1和它本身整除  方法二:一个数总能写成“n = a * b”的形式,a和b之间一定有一个数不大于n/2  方法三:每一个整数都可以看做由两个数相乘得到,且每个乘数不大于原整数的平方根  

    2024年02月13日
    浏览(44)
  • Python 判断列表里是否有重复元素的三种方法

    一、用 set 方法去重后与原列表长度比较 二、用 append 的方式把原列表中的元素添加到一个新列表,确保新列表里不存在重复的元素,然后比较两个列表 三、用 fromkeys 的方法创建一个字典,因为字典的键会自动去重,所以可以比较字典和原列表的长度,跟方法一很像

    2024年02月11日
    浏览(41)
  • C语言——字符串、打印字符串的三种方式

    字符串( character string )是一个或多个字符的序列,空字符( null character )\\0 标记字符串的结束 字符串以数组( array )存储,也就是以空字符(\\0)结尾的 char 类型数组 用 %s 转换说明来处理字符串的输入和输出 输入和输出必须给出字符串的首地址,可以 直接是字符串常量

    2024年02月11日
    浏览(43)
  • JavaScript删除字符串最后一个字符的三种方法

    JavaScript删除字符串最后一个字符的三种方法 在JavaScript中,我们经常需要操作字符串。有时候,我们可能需要删除字符串的最后一个字符。下面将介绍三种常见的方法来实现这个目标。 方法一:使用 slice 函数 slice 函数是JavaScript中一个常用的字符串方法,它可以返回一个新的

    2024年02月08日
    浏览(42)
  • 【Python】判断素数的三种方法以及for-else语句的介绍

      输入一个数,如果是素数就输出\\\"Yes\\\",否则输出\\\"No\\\" 自定义函数 is_prime() ,首先排除1,然后再对该数之前的数进行枚举,当遇到能被当前的数整除时返回False,若没有数能将其整除意味着这个数是素数,返回True。然后对返回的结果进行判断从而输出\\\"Yes\\\"或\\\"No\\\" 当然,我们可以

    2024年02月04日
    浏览(29)
  • C#异步方法async/await的三种返回类型

    有群友问C#异步方法async返回值Task和void的区别?看似简单,但不容易把它们用好。在C#中的异步编程已经成为现代编程的标配,异步方法(async/await)是实现异步编程的一种常用方式。在异步方法中,可以使用 Task 或 void 作为返回类型,还可以使用ValueTask返回类型。本文将介绍

    2024年02月04日
    浏览(36)
  • 计算字符串长度的三种方法(库函数 指针 )【详解】

    求字符串长度简单来说就是计算一个字符串(字符数组)中元素的个数即从数组头部计数,直到遇到字符串’\\0’结束符为止, 计数结果不包括’\\0’. C语言中的库函数strlen,它包含于string.h中,因此我们需要在使用前添加头文件 ,具体用法如下: strlen从数组头部计数,直到遇到字

    2024年02月06日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包