C 标准库 - <ctype.h>

简介

C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符。
这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符。
如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。


库函数

下面列出了头文件 ctype.h 中定义的函数:

序号函数 & 描述
1int isalnum(int c)
该函数检查所传的字符是否是字母和数字。
2int isalpha(int c)
该函数检查所传的字符是否是字母。
3int iscntrl(int c)
该函数检查所传的字符是否是控制字符。
4int isdigit(int c)
该函数检查所传的字符是否是十进制数字。
5int isgraph(int c)
该函数检查所传的字符是否有图形表示法。
6int islower(int c)
该函数检查所传的字符是否是小写字母。
7int isprint(int c)
该函数检查所传的字符是否是可打印的。
8int ispunct(int c)
该函数检查所传的字符是否是标点符号字符。
9int isspace(int c)
该函数检查所传的字符是否是空白字符。
10int isupper(int c)
该函数检查所传的字符是否是大写字母。
11int 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”

序号函数 & 描述
1int tolower(int c)
该函数把大写字母转换为小写字母。
2int 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字母字符
小写字母和大写字母的集合。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值