[西门子] 如何用<ctype.h>判断和转换字符类型

[复制链接]
查看123 | 回复0 | 2024-6-28 08:00:09 | 显示全部楼层 |阅读模式
>点击蓝字,关注我们






C语言的魔法书:揭秘stdio.h

数学公式"math.h"标准头文件,你知道什么时候用?怎么用吗?(一)

01
本节重点
C语言<ctype.h>标准头文件



前言


字符是最基本的数据类型,它可以表示字母、数字、标点符号等。在C语言中,字符是用单引号括起来的一个字符,例如’a’、‘1’、'!‘等。字符也可以用ASCII码表示,ASCII码是一个整数,它对应了一个字符。例如,字符’A’的ASCII码是65,字符’0’的ASCII码是48,字符’'(空格)的ASCII码是32。


但是,如果我们想要判断一个字符是什么类型,或者把一个字符转换成另一个类型,我们该怎么做呢?


这时候,我们就需要用到<ctype.h>标准头文件


<ctype.h>是C语言的一个标准库,它提供了一系列的函数,可以用来判断和转换字符的类型。这些函数都是以is或to开头的,它们的参数都是一个int类型的值,通常是一个字符的ASCII码,它们的返回值都是一个int类型的值,通常是一个布尔值(0或1)或一个字符的ASCII码。


下面,我们来看看<ctype.h>包含的全部的函数,以及每个函数的功能。


<ctype.h>的函数


函数原型
功能
int  iscntrl(int c)
判断字符c是否为控制字符。
int  isalnum(int c)
判断字符c是否为字母或数字
int  isalpha(int c)
判断字符c是否为英文字母
int  isascii(int c)
判断字符c是否为ascii码
int  isblank(int c)
判断字符c是否为TAB或空格
int  isdigit(int c)
判断字符c是否为数字
int  isgraph(int c)
判断字符c是否为除空格外的可打印字符
int  islower(int c)
判断字符c是否为小写英文字母
int  isprint(int c)
判断字符c是否为可打印字符(含空格)
int  ispunct(int c)
判断字符c是否为标点符号
int  isspace(int c)
判断字符c是否为空白符
int  isupper(int c)
判断字符c是否为大写英文字母
int  isxdigit(int c)
判断字符c是否为十六进制数字
int  toascii(int c)
将字符c转换为ascii码
int  tolower(int c)
将字符c转换为小写英文字母
int  toupper(int c);
将字符c转换为大写英文字母


详细说明:

  • int iscntrl(int     c):判断字符c是否为控制字符。控制字符是一些不可打印的字符,它们用来控制输入输出设备的行为,例如换行、退格、响铃等。控制字符的ASCII码范围是0到31,以及127。如果c是控制字符,返回1,否则返回0。


  • int isalnum(int     c):判断字符c是否为字母或数字。字母包括大写和小写的英文字母,数字包括0到9的阿拉伯数字。如果c是字母或数字,返回1,否则返回0。


  • int isalpha(int     c):判断字符c是否为英文字母。英文字母包括大写和小写的英文字母。如果c是英文字母,返回1,否则返回0。


  • int isascii(int     c):判断字符c是否为ASCII码。ASCII码是一个标准的字符编码,它定义了128个字符,包括控制字符、字母、数字、标点符号等。ASCII码的范围是0到127。如果c是ASCII码,返回1,否则返回0。


  • int isblank(int     c):判断字符c是否为TAB或空格。TAB是一个制表符,它用来对齐文本,它的ASCII码是9,空格是一个空白符,它用来分隔单词,它的ASCII码是32。如果c是TAB或空格,返回1,否则返回0。


  • int isdigit(int     c):判断字符c是否为数字。数字包括0到9的阿拉伯数字。如果c是数字,返回1,否则返回0。


  • int isgraph(int     c):判断字符c是否为除空格外的可打印字符。可打印字符是一些可以在屏幕或纸张上显示的字符,它们包括字母、数字、标点符号等。除空格外的可打印字符的ASCII码范围是33到126。如果c是除空格外的可打印字符,返回1,否则返回0。


  • int islower(int     c):判断字符c是否为小写英文字母。小写英文字母包括a到z的英文字母。如果c是小写英文字母,返回1,否则返回0。


  • int isprint(int     c):判断字符c是否为可打印字符。可打印字符是一些可以在屏幕或纸张上显示的字符,它们包括字母、数字、标点符号、空格等。可打印字符的ASCII码范围是32到126。如果c是可打印字符,返回1,否则返回0。


  • int ispunct(int     c):判断字符c是否为标点符号。标点符号是一些用来分隔或强调句子或单词的符号,例如逗号、句号、问号、感叹号等。标点符号的ASCII码范围是33到47,58到64,91到96,123到126。如果c是标点符号,返回1,否则返回0。


  • int isspace(int     c):判断字符c是否为空白符。空白符是一些用来分隔或格式化文本的符号,例如空格、TAB、换行、回车等。空白符的ASCII码范围是9到13,以及32。如果c是空白符,返回1,否则返回0。


  • int isupper(int     c):判断字符c是否为大写英文字母。大写英文字母包括A到Z的英文字母。如果c是大写英文字母,返回1,否则返回0。


  • int isxdigit(int     c):判断字符c是否为十六进制数字。十六进制数字包括0到9的阿拉伯数字,以及A到F或a到f的英文字母。如果c是十六进制数字,返回1,否则返回0。


  • int toascii(int     c):将字符c转换为ASCII码。如果c已经是ASCII码,返回c,否则返回c的低7位,即c和127的按位与运算的结果。


  • int tolower(int     c):将字符c转换为小写英文字母。如果c已经是小写英文字母,返回c,否则返回c和32的按位或运算的结果,即c加上32的值。如果c不是英文字母,返回c。


  • int toupper(int     c):将字符c转换为大写英文字母。如果c已经是大写英文字母,返回c,否则返回c和223的按位与运算的结果,即c减去32的值。如果c不是英文字母,返回c。


如何使用<ctype.h>


要使用<ctype.h>的函数,我们需要在C程序的开头包含<ctype.h>标准头文件,例如:




#include<stdio.h>#include<ctype.h>
然后,我们就可以在程序中调用<ctype.h>的函数,传入一个字符或一个ASCII码,得到一个返回值。例如,我们可以用以下的代码判断一个字符是否为数字,并输出结果:










charch = '9';if(isdigit(ch)) {    printf("%c is a digit.\n", ch);} else{    printf("%c is not a digit.\n", ch);}

输出结果为:
9 isa digit.


我们也可以用以下的代码把一个字符转换为大写英文字母,并输出结果:




charch = 'a';ch = toupper(ch);printf("%c\n", ch);输出结果为:
A


这些函数可以用来处理单个字符,也可以用来处理字符串。字符串是一个由字符组成的序列,它以’\0’(空字符)结尾。我们可以用一个字符数组来存储一个字符串,例如:


charstr[10] = "Hello";我们可以用一个循环来遍历字符串中的每个字符,然后用<ctype.h>的函数来判断或转换字符的类型。例如,我们可以用以下的代码把一个字符串中的所有字母转换为大写,并输出结果,例如:










charstr[10] = "Hello";for(inti = 0; i < 10; i++) {    if(isalpha(str))     {        str = toupper(str);   }}printf("%s\n", str);输出结果为:
HELLO
<ctype.h>的应用


<ctype.h>的函数可以用来处理各种字符相关的问题,例如:

  • 1、验证用户的输入是否合法,例如是否为数字、字母、邮箱地址等。
  • 2、对用户的输入进行转换,例如把字母转换为大写或小写,把十六进制数字转换为十进制数字等。
  • 3、对文本进行分析,例如统计文本中的单词个数、字母个数、标点符号个数等。
  • 4、对文本进行加密或解密,例如使用凯撒密码、异或密码等。









觉得有用的话可以转发给你身边需要的朋友!非常感谢!!!




点赞加关注,学习不迷路
微信公众号|工控小新
EPLAN电气绘图、TIA博图基础 、CAD、C语言教学、单片机基础、三菱PLC ... 每日持续更新中




发现“分享”“赞”了吗,戳我看看吧


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则