可以通过使用isalpha()
函数来简化switch
语句。
如果作为参数传递的字符是字母字符,则该函数返回非零整数,如果字符不是字母,则返回0
(即false
)。
因此,可以使用以下代码生成与上一个switch
语句相同的结果:
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch = 'a';
if (!isalpha(ch)){
printf("这个字符不是字母.\n");
}else
{
switch (tolower(ch))
{
case 'a': case 'e': case 'i': case 'o': case 'u':
printf("这个字符是一个元音.\n");
break;
default:
printf("这个字符是一个辅音.\n");
break;
}
}
return 0;
}
执行上面示例代码,得到以下结果:
hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out
这个字符是一个元音.
if
语句测试ch
是否为字母,如果是,则输出一条消息。如果ch
是一个字母,switch
语句将判断它是元音还是辅音。
五个元音值产生一个输出,默认情况(未找到匹配时)产生另一个输出。ctype.h
头文件还声明了一些用于测试字符的其他函数。它们分别如下所示:
函数 | 作用 |
---|---|
islower() |
判断是否为小写字母 |
isupper() |
判断是否为大写字母 |
isalnum() |
判断是否为大写或小写字母或十进制数字 |
iscntrl() |
判断是否为控制字符 |
isprint() |
判断是否为可打印字符(含空格) |
isgraph() |
判断是否为除空格外的任何打印字符 |
isdigit() |
判断是否为十进制数字(0 到9 ) |
isxdigit() |
判断是否为十六进制数字(0 到9 ,A 到F ,a 到f ) |
isblank() |
判断是否为标准空白字符(空格,\t ) |
isspace() |
判断是否为空白字符(空格,\n ,\t ,\v ,\r ,\f ) |
ispunct() |
判断是否为打印字符,其中isspace() 和isalnum() 返回false |
isalpha() |
判断是否为大写或小写字母 |
tolower() |
转换为小写 |
toupper() |
转换为大写 |