这个系列主要是我学习《C和指针》这本书的一些笔记,主要关于一些小的细节,目的是供自己学习和参考,详细地部分建议大家可以阅读一下《C和指针》这本书
字符分类
每个分类函数接受一个包含字符值的整型参数。函数测试这个字符并返回一个整型值,表示真或假。下表列出了这些字符分类函数以及它们每个所执行的测试。
函数 | 如果它的参数符合下列条件就返回真 |
---|---|
iscntrl | 任何控制字符 |
isspace | 空白字符:空格’ ‘、换页 ‘\f’、换行’\n’、回车’\r’、制表符’\t’ 或垂直制表符’\v’ |
isdigit | 十进制数字 0~9 |
isxdigit | 十六进制数字,包括所有十进制数字、小写字母 a~f、大写字母 A~F |
islower | 小写字母 a~z |
isupper | 大写字母 A~Z |
isalpha | 字母 a~z 或 A~Z |
isalnum | 字母或数字 (a~z、A~Z 或 0~9) |
ispunct | 标点符号,任何不属于数字或字母的图形字符(可打印字符) |
isgraph | 任何图形字符 |
isprint | 任何可打印字符,包括图形字符和空白字符 |
字符转换
转换函数用于把大写字母转换为小写字母或者把小写字母转换为大写字母、
1 | int tolower( int ch ); |
toupper
函数返回其参数的对应大写形式,tolower
函数返回其参数的对应小写形式。如果函数的参数并不是一个处于适当大小写状态的字符(即 toupper
的参数不是小写字母或 tolower
的参数不是个大写字母),函数将不修改参数,而是直接返回。
注意
直接测试或操作字符会降低程序的可移植性。例如,考虑下面这条语句,它试图测试 ch
是否是一个大写字符。
1 | if( ch >= 'A' && ch <= 'Z' ) |
这条语句在使用 ASCII
字符集的机器上能够运行,但在使用 EBCDIC
字符集的机器上将会失败。另外,下面这条语句
1 | if( isupper( ch ) ) |
无论机器使用哪个字符集,它都能顺利运行。