- 字符分类
- 字符转换
标准库包含了两组函数,用于操作单独的字符,他们的原型在头文件ctype.h。第一组函数用于对字符分类,而第二类函数用于转换字符。
字符分类每个分类函数接受一个包含字符值的整型参数。函数测试这个字符并返回一个整型值,表示真或假。下列表格列出了这些分类函数以及他们每个所执行的测试。
| 函数 | 如果它的参数符合下列条件就返回为真 |
|---|---|
| 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 | 任何可打印符号,包括图形字符和空白字符 |
转换函数把大写字母转换为小写字母或者把小写字母转换为大写字母。
int tolower(int ch);
int toupper(int ch);
toupper函数返回其参数的对应的大写形式,tolower函数返回其参数的小写形式。如果函数的参数并不是一个处于适当大小写状态的字符(即toupper的参数不是小写字母或者tolower的参数不是大写字母),函数将不会修改参数直接返回。
提示:
直接测试或者操纵字符将会降低程序的可移植性。例如,考虑下面的这条语句,他试图测试ch是否是一个大写字母
if(ch>='A' && ch<='Z')
这条语句在使用ASCII字符集的机器上能够运行,但在使用EBCDIC字符集的机器上将会失败。另一方面,下面这条语句
if(isupper(ch))
无论机器在使用哪个字符集,它都能顺利运行。



