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