C 语言重拾【四】ctype.h 系列的字符函数
C 有一系列专门处理字符的函数,ctype.h 头文件包含了这些函数的原型。这些函数接受一个字符作为参数,如果该字符属于某特殊的类别,就返回一个非零值(真);否则,返回口(假)。例如,如果 isalpha() 函数的参数是一个字母,则返回一个非零值。
1  | // cypher2.c -- 替换输入的字母,非字母字符保持不变  | 
下面是该程序的一个输出示例,注意大小写字母都被替换了,除了空格和标点符号:
Look! It’s a programmer!
Mppl! Ju’t b qsphsbnnfs!
下列两表列出了 ctype.h 头文件中的一些函数。有些函数涉及本地化,指的是为适应特定区域的使用习惯修改或扩展 C 基本用法的工具(例如,许多国家在书写小数点时,用逗号代替点号,于是特殊的本地化可以指定 C 编译器使用逗号以相同的方式输出浮点数,这样 123.45 可以显示为 123,45)。注意,字符映射函数不会修改原始的参数,这些函数只会返回己修改的值。也就是说,下面的语句不改变 ch 的值:
1  | tolower(ch); // 不影响 ch 的值  | 
这样做才会改变 ch 的值:
1  | ch = tolower(ch); //把 ch 转换成小写字母  | 
| 函数名 | 如果是下列参数时,返回值为真 | 
|---|---|
| isalnum() | 字母数字(字母或数字) | 
| isalpha() | 字母 | 
| isblank() | 标准空白字符(空格、水平制表符或换行符)或任何其他本地化指定为空白的字符 | 
| iscntrl() | 控制字符,如 Ctrl+B | 
| isdigit() | 数字 | 
| isgraph() | 除空格之外的任意可打印字符 | 
| islower() | 小写字母 | 
| isprint() | 可打印字符 | 
| ispunct() | 标点符号(除空格或字母数字字符以外的任何可打印字符) | 
| isspace() | 空白字符(空格、换行符、换页符、回车符、垂直制表符、水平制表符或其他本地化定义的字符) | 
| isupper() | 大写字母 | 
| isxdigit() | 十六进制数字符 | 
| 函数名 | 行为 | 
|---|---|
| tolower() | 如果参数是大写字符,该函数返回小写字符;否则,返回原始参数 | 
| toupper() | 如果参数是小写字符,该函数返回大写字符;否则,返回原始参数 | 
参考文献
- C Primer Plus