本文已整合到C语言标准库深度解读

作为强类型语言,C语言自其诞生以来,就通过类型来为程序员们增加重重阻碍。为了避免各种麻烦,早在上古时期,C语言的程序员们就写了大量判别变量类型的代码段,这些代码段也很快就走进了C语言的标准库。

ctype中共有11个鉴别字符类型的函数,这些函数的输入输出均为int型,但又不完全是int型。输入的int是通过强转得到的;输出为0和1,即布尔型。

返回1的情况 ASCII码位置 十六进制
isalnum 字母和数字 48-57, 65-90, 97-122 30-39, 41-5A, 61-7A
isalpha 字母 65-90, 97-122 41-5A, 61-7A
isupper 大写字母 65-90 41-5A
islower 小写字母 97-122 61-7A
iscntrl 控制字符 0-31,127 00-1F, 7F
isdigit 十进制数字 48-57 30-39
isxdigit 十六进制数字 48-57, 48-53, 97-102 30-39,41-46, 61-66
isgraph 图形字符 33-126 21-7E
isprint 可打印 32-126 20-7E
ispunct 标点符号 33-47, 58-64
91-96, 123-126
21-2F, 3A-40
5B-60, 7B-7E
isspace 空白字符 9-13,32 09-0D, 20

这些函数之间可由下图表示

#mermaid-svg-ar5NbW7J5LreiasR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ar5NbW7J5LreiasR .error-icon{fill:#552222;}#mermaid-svg-ar5NbW7J5LreiasR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ar5NbW7J5LreiasR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ar5NbW7J5LreiasR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ar5NbW7J5LreiasR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ar5NbW7J5LreiasR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ar5NbW7J5LreiasR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ar5NbW7J5LreiasR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ar5NbW7J5LreiasR .marker.cross{stroke:#333333;}#mermaid-svg-ar5NbW7J5LreiasR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ar5NbW7J5LreiasR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ar5NbW7J5LreiasR .cluster-label text{fill:#333;}#mermaid-svg-ar5NbW7J5LreiasR .cluster-label span{color:#333;}#mermaid-svg-ar5NbW7J5LreiasR .label text,#mermaid-svg-ar5NbW7J5LreiasR span{fill:#333;color:#333;}#mermaid-svg-ar5NbW7J5LreiasR .node rect,#mermaid-svg-ar5NbW7J5LreiasR .node circle,#mermaid-svg-ar5NbW7J5LreiasR .node ellipse,#mermaid-svg-ar5NbW7J5LreiasR .node polygon,#mermaid-svg-ar5NbW7J5LreiasR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ar5NbW7J5LreiasR .node .label{text-align:center;}#mermaid-svg-ar5NbW7J5LreiasR .node.clickable{cursor:pointer;}#mermaid-svg-ar5NbW7J5LreiasR .arrowheadPath{fill:#333333;}#mermaid-svg-ar5NbW7J5LreiasR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ar5NbW7J5LreiasR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ar5NbW7J5LreiasR .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ar5NbW7J5LreiasR .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ar5NbW7J5LreiasR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ar5NbW7J5LreiasR .cluster text{fill:#333;}#mermaid-svg-ar5NbW7J5LreiasR .cluster span{color:#333;}#mermaid-svg-ar5NbW7J5LreiasR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ar5NbW7J5LreiasR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

isxdigit
A-F a-f
isdigit
isprint
isgraph
isalnum
0-9
isalpha
isupper
A-Z
islower
a-z
ispunct
! # $ % & '等
space
isspace
FF NL CR
HT VT
iscntrl
BEL BS

此外,ctype中还封装了两个大小写转换的函数:int tolower(int c)int toupper(int c),这两个函数很容易实现,只要看一下十六进制下的ASCII即可发现。

前32个字符为控制符

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

32-126为可打印字符,其中20为空格,即大小写字母正好差了0x20

0 1 2 3 4 5 6 7 8 9 A B C D E F
2 ! " # $ % & ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

C语言ctype.h相关推荐

  1. C语言ctype.h库

    整理自:C语言入门经典 从别处整理而来,但是具体出处不知道了 ctype.h库中的所有函数以及其功能: int isalpha(int ch)  若是字符返回非0值,否则返回false int tol ...

  2. C语言再学习 -- ctype.h字符判断函数

    参看:ctype.h 百度百科 ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特 ...

  3. C语言库文件ctype.h中重要的库函数

    C Primer Plus第七章分支跳转章节中,提到了ctype.h头文件中的一些用于判断字符类型的库函数接口. isalnum() 字母数字 isalpha() 字母 isblank() 标准的空白 ...

  4. C语言 : 标准库 - <ctype.h>

    简介 C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符. 这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符. 如果参数 c 满足描述的条件,则这些函 ...

  5. c语言isnumber函数用法,【C、C++】ctype.h、cctype中的isnumber()函数和isdigit()函数的区别...

    isnumber()函数和isdigit()函数并无区别,查看函数定义发现也是相同的,可能有微小的区别, Mac OS X 手册页 上ctype函数中对isnumber()和isdigit()函数的区 ...

  6. 头文件 ctype.h 以及函数 isalpha() tolower()

    ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符.控制字 ...

  7. c标准库头文件ctype.h详解

    最近实践了一些编程,越来越感觉库函数的重要性.掌握越来越多的函数才会站在巨人的肩膀上思考问题,而不是自己去写代码去实现函数,自己又能写几个函数呢-- ctype.h是C标准函数库中的头文件,定义了一批 ...

  8. C标准库头文件—ctype.h

    前言 定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符.控制字符等等.既支持单字节(Byte)字 ...

  9. 【ctype.h isdigit】

    ctype.h isdigit isdigit是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符. 一. ···C语言: 函数定义:int isdigit(int c); 头 ...

  10. 《C Primer Plus》第七章--C控制语句:分支和跳转(if else switch continue break goto 逻辑运算符ctype.h)

    文章目录 C控制语句:分支和跳转 本章内容 if语句 if else语句 另一个示例:介绍getchar()和putchar() ctype.h系列的字符函数 多重选择else if else与if配 ...

最新文章

  1. 怎么彻底删除电脑上的软件_你的电脑有救了:1 个神器几个进阶方法彻底删除流氓软件!...
  2. java多线程系类:基础篇:10生产者消费者的问题
  3. mysql 1146错误
  4. 1048 采药 1049 装箱问题
  5. 如何在ubuntu下安装合适的翻译词典
  6. linux的驱动开发——简单驱动程序编写
  7. 【JVM】GC Roots 根可达
  8. TOGAF9.2企业架构师考试小记
  9. 下载网页中的视频的两种方法
  10. “私域”和“会员制”有什么区别?
  11. 连接中国移动彩信网关发送彩信
  12. RS232_RS422_RS485简介
  13. k线形态python_Python量化分析之K线模式识别
  14. 和block循环引用说再见
  15. 【参赛作品66】快速搭建一套openGauss主备高可用集群
  16. 骞云再获阿里云产品生态集成认证,携手共建云原生管理新生态
  17. [jzoj5791]【NOIP2008模拟】阶乘 (数学)
  18. strcpy函数和strcat函数
  19. 键盘事件(onkeyup onkeydown)
  20. Mysql 慢日志查询小于1000ms显示0s问题排查

热门文章

  1. C语言图像分类算法,tuxiangfenleijulei 本算法基于C语言实现图像分类 - 下载 - 搜珍网...
  2. vue热敏打印机_如何在vue项目中调用打印机,打印指定区域
  3. 简信CRM:手机CRM软件的应用好处有哪些?
  4. codesys写文件到远程并在远程读取文件
  5. matlab整数规划分支计算,分支定界法求线性整数规划
  6. 微信加好友CALL地址 3.4.5.27
  7. android bluez 编译,[android源码分析]bluez起动过程中的各种plugin的初始化(一)-bluetooth_builtin数组所耍的花样...
  8. IDT oligo使用说明
  9. 腾讯随星播 v2.2.1 官方版​
  10. 2022年前端技术发展趋势