简介
C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符。
这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符。
如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。
库函数
下面列出了头文件 ctype.h 中定义的函数:
序号 | 函数 & 描述 |
---|---|
1 | int isalnum(int c) 该函数检查所传的字符是否是字母和数字。 |
2 | int isalpha(int c) 该函数检查所传的字符是否是字母。 |
3 | int iscntrl(int c) 该函数检查所传的字符是否是控制字符。 |
4 | int isdigit(int c) 该函数检查所传的字符是否是十进制数字。 |
5 | int isgraph(int c) 该函数检查所传的字符是否有图形表示法。 |
6 | int islower(int c) 该函数检查所传的字符是否是小写字母。 |
7 | int isprint(int c) 该函数检查所传的字符是否是可打印的。 |
8 | int ispunct(int c) 该函数检查所传的字符是否是标点符号字符。 |
9 | int isspace(int c) 该函数检查所传的字符是否是空白字符。 |
10 | int isupper(int c) 该函数检查所传的字符是否是大写字母。 |
11 | int isxdigit(int c) 该函数检查所传的字符是否是十六进制数字。 |
1.isalnum()
描述
C 库函数 void isalnum(int c)
检查所传的字符是否是字母和数字。
声明
下面是 isalnum() 函数的声明。
int isalnum(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个数字或一个字母,则该函数返回非零值,否则返回 0。
实例
下面的实例演示了 isalnum() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 'd';int var2 = '2';int var3 = '\t';int var4 = ' ';if( isalnum(var1) ){printf("var1 = |%c| 是字母数字\n", var1 );}else{printf("var1 = |%c| 不是字母数字\n", var1 );}if( isalnum(var2) ){printf("var2 = |%c| 是字母数字\n", var2 );}else{printf("var2 = |%c| 不是字母数字\n", var2 );}if( isalnum(var3) ){printf("var3 = |%c| 是字母数字\n", var3 );}else{printf("var3 = |%c| 不是字母数字\n", var3 );}if( isalnum(var4) ){printf("var4 = |%c| 是字母数字\n", var4 );}else{printf("var4 = |%c| 不是字母数字\n", var4 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |d| 是字母数字
var2 = |2| 是字母数字
var3 = | | 不是字母数字
var4 = | | 不是字母数字
2.isalpha()
描述
C 库函数 void isalpha(int c)
检查所传的字符是否是字母。
声明
下面是 isalpha() 函数的声明。
int isalpha(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个字母,则该函数返回非零值,否则返回 0。
实例
下面的实例演示了 isalpha() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 'd';int var2 = '2';int var3 = '\t';int var4 = ' ';if( isalpha(var1) ){printf("var1 = |%c| 是一个字母\n", var1 );}else{printf("var1 = |%c| 不是一个字母\n", var1 );}if( isalpha(var2) ){printf("var2 = |%c| 是一个字母\n", var2 );}else{printf("var2 = |%c| 不是一个字母\n", var2 );}if( isalpha(var3) ){printf("var3 = |%c| 是一个字母\n", var3 );}else{printf("var3 = |%c| 不是一个字母\n", var3 );}if( isalpha(var4) ){printf("var4 = |%c| 是一个字母\n", var4 );}else{printf("var4 = |%c| 不是一个字母\n", var4 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |d| 是一个字母
var2 = |2| 不是一个字母
var3 = | | 不是一个字母
var4 = | | 不是一个字母
3.iscntrl()
描述
C 库函数 void iscntrl(int c)
检查所传的字符是否是控制字符。
根据标准 ASCII 字符集,控制字符的 ASCII 编码介于 0x00 (NUL) 和 0x1f (US) 之间,以及 0x7f (DEL),某些平台的特定编译器实现还可以在扩展字符集(0x7f 以上)中定义额外的控制字符。
声明
下面是 iscntrl() 函数的声明。
int iscntrl(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个控制字符,则该函数返回非零值,否则返回 0。
实例
下面的实例演示了 iscntrl() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main ()
{int i = 0, j = 0;char str1[] = "all \a about \t programming";char str2[] = "w3cschool \n tutorials";/* 输出字符串直到控制字符 \a */while( !iscntrl(str1[i]) ) {putchar(str1[i]);i++;}/* 输出字符串直到控制字符 \n */while( !iscntrl(str2[j]) ) {putchar(str2[j]);j++;}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
all w3cschool
4.isdigit()
描述
C 库函数 void isdigit(int c)
检查所传的字符是否是十进制数字字符。
十进制数字是:0 1 2 3 4 5 6 7 8 9
声明
下面是 isdigit() 函数的声明。
int isdigit(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个数字,则该函数返回非零值,否则返回 0。
实例
下面的实例演示了 isdigit() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 'h';int var2 = '2';if( isdigit(var1) ){printf("var1 = |%c| 是一个数字\n", var1 );}else{printf("var1 = |%c| 不是一个数字\n", var1 );}if( isdigit(var2) ){printf("var2 = |%c| 是一个数字\n", var2 );}else{printf("var2 = |%c| 不是一个数字\n", var2 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |h| 不是一个数字
var2 = |2| 是一个数字
5.isgraph()
描述
C 库函数 void isgraph(int c)
检查所传的字符是否有图形表示法。
带有图形表示法的字符是除了空白字符(比如 ’ ‘)以外的所有可打印的字符。
声明
下面是 isgraph() 函数的声明。
int isgraph(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 有图形表示法,则该函数返回非零值,否则返回 0。
实例
下面的实例演示了 isgraph() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = '3';int var2 = 'm';int var3 = ' ';if( isgraph(var1) ){printf("var1 = |%c| 是可打印的\n", var1 );}else{printf("var1 = |%c| 是不可打印的\n", var1 );}if( isgraph(var2) ){printf("var2 = |%c| 是可打印的\n", var2 );}else{printf("var2 = |%c| 是不可打印的\n", var2 );}if( isgraph(var3) ){printf("var3 = |%c| 是可打印的\n", var3 );}else{printf("var3 = |%c| 是不可打印的\n", var3 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |3| 是可打印的
var2 = |m| 是可打印的
var3 = | | 是不可打印的
6.islower()
描述
C 库函数 int islower(int c) 检查所传的字符是否是小写字母。
声明
下面是 islower() 函数的声明。
int islower(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个小写字母,则该函数返回非零值(true),否则返回 0(false)。
实例
下面的实例演示了 islower() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 'Q';int var2 = 'q';int var3 = '3';if( islower(var1) ){printf("var1 = |%c| 是小写字母\n", var1 );}else{printf("var1 = |%c| 不是小写字母\n", var1 );}if( islower(var2) ){printf("var2 = |%c| 是小写字母\n", var2 );}else{printf("var2 = |%c| 不是小写字母\n", var2 );}if( islower(var3) ){printf("var3 = |%c| 是小写字母\n", var3 );}else{printf("var3 = |%c| 不是小写字母\n", var3 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |Q| 不是小写字母
var2 = |q| 是小写字母 var3 = |3| 不是小写字母
7.isprint()
描述
C 库函数 int isprint(int c)
检查所传的字符是否是可打印的。可打印字符是非控制字符的字符。
声明
下面是 isprint() 函数的声明。
int isprint(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个可打印的字符,则该函数返回非零值(true),否则返回 0(false)。
实例
下面的实例演示了 isprint() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 'k';int var2 = '8';int var3 = '\t';int var4 = ' ';if( isprint(var1) ){printf("var1 = |%c| 是可打印的\n", var1 );}else{printf("var1 = |%c| 是不可打印的\n", var1 );}if( isprint(var2) ){printf("var2 = |%c| 是可打印的\n", var2 );}else{printf("var2 = |%c| 是不可打印的\n", var2 );}if( isprint(var3) ){printf("var3 = |%c| 是可打印的\n", var3 );}else{printf("var3 = |%c| 是不可打印的\n", var3 );}if( isprint(var4) ){printf("var4 = |%c| 是可打印的\n", var4 );}else{printf("var4 = |%c| 是不可打印的\n", var4 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |k| 是可打印的
var2 = |8| 是可打印的
var3 = | | 是不可打印的
var4 = | | 是可打印的
8.ispunct()
描述
C 库函数 int ispunct(int c)
检查所传的字符是否是标点符号字符。标点符号字符可以是非字母数字(正如 isalnum 中的一样)的任意图形字符(正如 isgraph 中的一样)。
声明
下面是 ispunct() 函数的声明。
int ispunct(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个标点符号字符,则该函数返回非零值(true),否则返回 0(false)。
实例
下面的实例演示了 ispunct() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 't';int var2 = '1';int var3 = '/';int var4 = ' ';if( ispunct(var1) ){printf("var1 = |%c| 是标点符号字符\n", var1 );}else{printf("var1 = |%c| 不是标点符号字符\n", var1 );}if( ispunct(var2) ){printf("var2 = |%c| 是标点符号字符\n", var2 );}else{printf("var2 = |%c| 不是标点符号字符\n", var2 );}if( ispunct(var3) ){printf("var3 = |%c| 是标点符号字符\n", var3 );}else{printf("var3 = |%c| 不是标点符号字符\n", var3 );}if( ispunct(var4) ){printf("var4 = |%c| 是标点符号字符\n", var4 );}else{printf("var4 = |%c| 不是标点符号字符\n", var4 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |t| 不是标点符号字符
var2 = |1| 不是标点符号字符
var3 = |/| 是标点符号字符
var4 = | | 不是标点符号字符
9.isspace()
描述
C 库函数 int isspace(int c)
检查所传的字符是否是空白字符。
标准的空白字符包括:
' ' (0x20) space (SPC) 空格符
'\t' (0x09) horizontal tab (TAB) 水平制表符
'\n' (0x0a) newline (LF) 换行符
'\v' (0x0b) vertical tab (VT) 垂直制表符
'\f' (0x0c) feed (FF) 换页符
'\r' (0x0d) carriage return (CR) 回车符
声明
下面是 isspace() 函数的声明。
int isspace(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个空白字符,则该函数返回非零值(true),否则返回 0(false)。
实例
下面的实例演示了 isspace() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 't';int var2 = '1';int var3 = ' ';if( isspace(var1) ){printf("var1 = |%c| 是空白字符\n", var1 );}else{printf("var1 = |%c| 不是空白字符\n", var1 );}if( isspace(var2) ){printf("var2 = |%c| 是空白字符\n", var2 );}else{printf("var2 = |%c| 不是空白字符\n", var2 );}if( isspace(var3) ){printf("var3 = |%c| 是空白字符\n", var3 );}else{printf("var3 = |%c| 不是空白字符\n", var3 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |t| 不是空白字符
var2 = |1| 不是空白字符
var3 = | | 是空白字符
10.isupper()
描述
C 库函数 int isupper(int c)
检查所传的字符是否是大写字母。
声明
下面是 isupper() 函数的声明。
int isupper(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个大写字母,则该函数返回非零值(true),否则返回 0(false)。
实例
下面的实例演示了 isupper() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int var1 = 'M';int var2 = 'm';int var3 = '3';if( isupper(var1) ){printf("var1 = |%c| 是大写字母\n", var1 );}else{printf("var1 = |%c| 不是大写字母\n", var1 );}if( isupper(var2) ){printf("var2 = |%c| 是大写字母\n", var2 );}else{printf("var2 = |%c| 不是大写字母\n", var2 );} if( isupper(var3) ){printf("var3 = |%c| 是大写字母\n", var3 );}else{printf("var3 = |%c| 不是大写字母\n", var3 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |M| 是大写字母
var2 = |m| 不是大写字母
var3 = |3| 不是大写字母
11.isxdigit()
描述
C 库函数 int isxdigit(int c)
检查所传的字符是否是十六进制数字。
声明
下面是 isxdigit() 函数的声明。
int isxdigit(int c);
参数
- c – 这是要检查的字符。
返回值
如果 c 是一个十六进制数字,则该函数返回非零值(true),否则返回 0(false)。
实例
下面的实例演示了 isxdigit() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{char var1[] = "tuts";char var2[] = "0xE";if( isxdigit(var1[0]) ){printf("var1 = |%s| 是十六进制数字\n", var1 );}else{printf("var1 = |%s| 不是十六进制数字\n", var1 );}if( isxdigit(var2[0] )){printf("var2 = |%s| 是十六进制数字\n", var2 );}else{printf("var2 = |%s| 不是十六进制数字\n", var2 );}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
var1 = |tuts| 不是十六进制数字
var2 = |0xE| 是十六进制数字
标准库还包含了两个转换函数,它们接受并返回一个 “int”
序号 | 函数 & 描述 |
---|---|
1 | int tolower(int c) 该函数把大写字母转换为小写字母。 |
2 | int toupper(int c) 该函数把小写字母转换为大写字母。 |
1.tolower()
描述
C 库函数 int tolower(int c)
把给定的字母转换为小写字母。
声明
下面是 tolower() 函数的声明。
int tolower(int c);
参数
- c – 这是要被转换为小写的字母。
返回值
如果 c 有相对应的小写字母,则该函数返回 c 的小写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。
实例
下面的实例演示了 tolower() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int i = 0;char c;char str[] = "W3CSCHOOL TUTORIALS";while( str[i] ) {putchar(tolower(str[i]));i++;}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
w3cschool tutorials
2.toupper()
描述
C 库函数 int toupper(int c)
把小写字母转换为大写字母。
声明
下面是 toupper() 函数的声明。
int toupper(int c);
参数
- c – 这是要被转换为大写的字母。
返回值
如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。
实例
下面的实例演示了 toupper() 函数的用法。
#include <stdio.h>
#include <ctype.h>int main()
{int i = 0;char c;char str[] = "W3Cschool Tutorials";while(str[i]){putchar (toupper(str[i]));i++;}return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
W3CSCHOOL TUTORIALS
字符类
序号 | 字符类 & 描述 |
---|---|
1 | 数字 完整的数字集合 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } |
2 | 十六进制数字 集合 { 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f } |
3 | 小写字母 集合 { a b c d e f g h i j k l m n o p q r s t u v w x y z } |
4 | 大写字母 集合 {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z } |
5 | 字母 小写字母和大写字母的集合 |
6 | 字母数字字符 数字、小写字母和大写字母的集合 |
7 | 标点符号字符 集合 ! ” # $ % & ’ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { |
8 | 图形字符 字母数字字符和标点符号字符的集合 |
9 | 空格字符 制表符、换行符、垂直制表符、换页符、回车符、空格符的集合。 |
10 | 可打印字符 字母数字字符、标点符号字符和空格字符的集合。 |
11 | 控制字符 在 ASCII 编码中,这些字符的八进制代码是从 000 到 037,以及 177(DEL)。 |
12 | 空白字符 包括空格符和制表符。 |
13 | 字母字符 小写字母和大写字母的集合。 |