易百教程

字符操作函数

C语言具有测试或操纵单个字符的函数。这些函数都在ctype.h头文件中定义。
所以,如需要使用CTYPE函数,则ctype.h头文件必须包含在源代码中:

#include <ctype.h>

CTYPE函数分为两类:测试和操作。下表列出了测试函数:

函数 描述
isalnum(ch) 判断是否字母(大写或小写)或数字
isalpha(ch) 判断是否为字母表的大写或小写字母
isascii(ch) 判断是否为ASCII值,范围为0127
isblank(ch) 判断是否为制表符或空格或其他空白字符
iscntrl(ch) 判断是否为控制代码字符,值范围:031,以及127
isdigit(ch) 判断是否为字符09
isgraph(ch) 判断是否为除空格外的任何可打印字符
ishexnumber(ch) 判断是否为十六进制数字,09AF(大写或小写)
islower(ch) 判断是否为字母表的小写字母,az
isnumber(ch) 详见:isdigit()
isprint(ch) 判断是否为可以显示的任何字符,包括空格
ispunct(ch) 判断是否为标点符号
isspace(ch) 判断是否为空白字符,空格,制表符和换页符等
isupper(ch) 判断是否为字母表的大写字母,AZ
isxdigit(ch) 详见:ishexnumber()

操作函数

函数 描述
toascii(ch) ch字符的ASCII码值,取值范围为0~127
tolower(ch) ch字符的小写形式
toupper(ch) ch字符的大写形式

一般来说,测试函数以is开头,而转换函数则以to。每个CTYPE函数都接受一个int值作为参数,每个CTYPE函数都返回一个int值。

1. 示例代码

#include <stdio.h> 
#include <ctype.h> 

int main()
{ 
    char phrase[] = "this is a test."; 

    int index,alpha,blank,punct; 
    alpha = blank = punct = 0; 

    /* 收集数据资料 */ 
    index = 0; 
    while(phrase[index]) 
   { 
      if(isalpha(phrase[index])) 
           alpha++; 
      if(isblank(phrase[index])) 
           blank++; 
      if(ispunct(phrase[index])) 
           punct++; 
      index++; 
    } 

   /* 打印结果 */ 
   printf("\\"%s\\"
",phrase); 
   puts("统计:"); 
   printf("%d 个字母字符
",alpha); 
   printf("%d 个空格
",blank); 
   printf("%d 个标点符号
",punct); 
   return(0); 
}

编译和执行上面示例代码,得到以下结果:

hema@ubuntu:~/book$ gcc -o main main.c
hema@ubuntu:~/book$ ./main
"this is a test."
统计:
11 个字母字符
3 个空格
1 个标点符号