fbpx
维基百科

ctype.h

ctype.hC標準函数庫中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符、控制字符等等。既支持单字节字符,也支持宽字符[1]

实现 编辑

现代的C库中,字符分类函数一般不用比较测试(comparison tests)实现,而是静态查表来实现。

例如,创建一个由256个8位宽整数组成的数组,每个整数的每位对应字符的特定的分类性质,如属于数字、属于字母等等。如果最低位表示属于数字性质,那么可以写成如下代码:

#define isdigit(x) (TABLE[x] & 1) 

早期版本的Linux使用了潜在犯错的方法,类似于:

#define isdigit(x) ((x) >= '0' && (x) <= '9') 

这会产生问题,如宏参数x具有副作用---例如,如果调用isdigit(x++)isdigit(run_some_program()),可能不是很显然,isdigit的参数将被求值两次。所以,查表的方法被广泛使用。

函数 编辑

单字节字符处理函数在ctype.h(C++的cctype )中声明。宽字节字符处理函数在wctype.h(C++的cwctype)中声明.

单字节 宽字节 描述
isalnum iswalnum 是否为字母数字
isalpha iswalpha 是否为字母
islower iswlower 是否为小写字母
isupper iswupper 是否为大写字母
isdigit iswdigit 是否为数字
isxdigit iswxdigit 是否为16进制数字
iscntrl iswcntrl 是否为控制字符
isgraph iswgraph 是否为图形字符(例如,空格、控制字符都不是)
isspace iswspace 是否为空格字符(包括制表符、回车符、换行符等)
isblank iswblank 是否为空白字符 (C99/C++11新增)(包括水平制表符)
isprint iswprint 是否为可打印字符
ispunct iswpunct 是否为标点
tolower towlower 转换为小写
toupper towupper 转换为大写
不適用 iswctype 检查一个wchar_t是否是属于指定的分类
不適用 towctrans 使用指定的变换映射来转换一个wchar_t(实际上是大小写的转换)
不適用 wctype 返回一个宽字符的类别,用于iswctype函数
不適用 wctrans 返回一个变换映射,用于 towctrans

参考文献 编辑

  1. ^ (PDF). . p. 193, § 7.4 [2013-06-20]. (原始内容 (PDF)存档于2011-01-24). 

外部链接 编辑

ctype, 是c標準函数庫中的头文件, 定义了一批c语言字符分类函数, character, classification, functions, 用于测试字符是否属于特定的字符类别, 如字母字符, 控制字符等等, 既支持单字节字符, 也支持宽字符, 目录, 实现, 函数, 参考文献, 外部链接实现, 编辑现代的c库中, 字符分类函数一般不用比较测试, comparison, tests, 实现, 而是静态查表来实现, 例如, 创建一个由256个8位宽整数组成的数组, 每个整数的每位对应字符的特定的分类性质, 如. ctype h是C標準函数庫中的头文件 定义了一批C语言字符分类函数 C character classification functions 用于测试字符是否属于特定的字符类别 如字母字符 控制字符等等 既支持单字节字符 也支持宽字符 1 目录 1 实现 2 函数 3 参考文献 4 外部链接实现 编辑现代的C库中 字符分类函数一般不用比较测试 comparison tests 实现 而是静态查表来实现 例如 创建一个由256个8位宽整数组成的数组 每个整数的每位对应字符的特定的分类性质 如属于数字 属于字母等等 如果最低位表示属于数字性质 那么可以写成如下代码 define isdigit x TABLE x amp 1 早期版本的Linux使用了潜在犯错的方法 类似于 define isdigit x x gt 0 amp amp x lt 9 这会产生问题 如宏参数x具有副作用 例如 如果调用isdigit x 或isdigit run some program 可能不是很显然 isdigit的参数将被求值两次 所以 查表的方法被广泛使用 函数 编辑单字节字符处理函数在ctype h C 的cctype 中声明 宽字节字符处理函数在wctype h C 的cwctype 中声明 单字节 宽字节 描述isalnum iswalnum 是否为字母数字isalpha iswalpha 是否为字母islower iswlower 是否为小写字母isupper iswupper 是否为大写字母isdigit iswdigit 是否为数字isxdigit iswxdigit 是否为16进制数字iscntrl iswcntrl 是否为控制字符isgraph iswgraph 是否为图形字符 例如 空格 控制字符都不是 isspace iswspace 是否为空格字符 包括制表符 回车符 换行符等 isblank iswblank 是否为空白字符 C99 C 11新增 包括水平制表符 isprint iswprint 是否为可打印字符ispunct iswpunct 是否为标点tolower towlower 转换为小写toupper towupper 转换为大写不適用 iswctype 检查一个wchar t是否是属于指定的分类不適用 towctrans 使用指定的变换映射来转换一个wchar t 实际上是大小写的转换 不適用 wctype 返回一个宽字符的类别 用于iswctype函数不適用 wctrans 返回一个变换映射 用于 towctrans参考文献 编辑 ISO IEC 9899 1999 specification PDF p 193 7 4 2013 06 20 原始内容 PDF 存档于2011 01 24 外部链接 编辑維基教科書中的相關電子教程 C Character Class Test Library維基教科書中的相關電子教程 C character classification 取自 https zh wikipedia org w index php title Ctype h amp oldid 61947634, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。