Skip to content

C 语言重拾【四】ctype.h 系列的字符函数

轩辕十四
Published date:

C 有一系列专门处理字符的函数,ctype.h 头文件包含了这些函数的原型。这些函数接受一个字符作为参数,如果该字符属于某特殊的类别,就返回一个非零值(真);否则,返回口(假)。例如,如果 isalpha() 函数的参数是一个字母,则返回一个非零值。

// cypher2.c -- 替换输入的字母,非字母字符保持不变
#include <stdio.h>
#include <ctype.h> // 包含isalpha()的函数原型
int main (void) {
  char ch;
  while ((ch = getchar()) != '\n') {
    if (isalpha(ch))    // 如果是一个宇字符,
      putchar(ch + 1);  // 显示该字符的下一个字符
    else                // 否则,
      putchar(ch);      // 原样显示
  }
    putchar(ch);        // 显示换行符
    return 0;
}

下面是该程序的一个输出示例,注意大小写字母都被替换了,除了空格和标点符号:

Look! It’s a programmer!

Mppl! Ju’t b qsphsbnnfs!

下列两表列出了 ctype.h 头文件中的一些函数。有些函数涉及本地化,指的是为适应特定区域的使用习惯修改或扩展 C 基本用法的工具(例如,许多国家在书写小数点时,用逗号代替点号,于是特殊的本地化可以指定 C 编译器使用逗号以相同的方式输出浮点数,这样 123.45 可以显示为 123,45)。注意,字符映射函数不会修改原始的参数,这些函数只会返回己修改的值。也就是说,下面的语句不改变 ch 的值:

tolower(ch);	// 不影响 ch 的值

这样做才会改变 ch 的值:

ch = tolower(ch);	//把 ch 转换成小写字母
函数名如果是下列参数时,返回值为真
isalnum()字母数字(字母或数字)
isalpha()字母
isblank()标准空白字符(空格、水平制表符或换行符)或任何其他本地化指定为空白的字符
iscntrl()控制字符,如 Ctrl+B
isdigit()数字
isgraph()除空格之外的任意可打印字符
islower()小写字母
isprint()可打印字符
ispunct()标点符号(除空格或字母数字字符以外的任何可打印字符)
isspace()空白字符(空格、换行符、换页符、回车符、垂直制表符、水平制表符或其他本地化定义的字符)
isupper()大写字母
isxdigit()十六进制数字符
函数名行为
tolower()如果参数是大写字符,该函数返回小写字符;否则,返回原始参数
toupper()如果参数是小写字符,该函数返回大写字符;否则,返回原始参数

Table of contents

Open Table of contents

参考文献

Previous
C 语言重拾【五】指针
Next
C 语言重拾【三】新的 _Bool 类型