详解字符函数<ctype.h>

    在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。

    一、字符串的分类

    <ctype.h>是专⻔做字符分类的,就是专门去区分各个字符是什么类型(即检查ASCII码)的一个库函数。

函数介绍:

    iscntrl

  函数的声明:    int iscntrl (int c); (其中,C 是要检查的字符)

  作用:根据标准 ASCII 字符集,控制字符 ASCII 编码介于 0x00 (NUL) 0x1f (US) 之间,以及 0x7f (DEL)。如果判断的字符 C 的ASCII编码处于控制字符之内,则函数返回一个非0值,反之返回0。

  简单说明:判断字符 C 是否为控制字符( 即字符C 的 ASCII值在 0 ~ 31)。

#include <stdio.h>  
#include <ctype.h>  
int main() {  
    char ch;  
    printf("请输入一个字符: ");  
    scanf("%c", &ch);  
    if (iscntrl(ch)) {  
        printf("'%c' 是一个控制字符。\n", ch);  
    } else {  
        printf("'%c' 不是一个控制字符。\n", ch);  
    }  
    return 0;  
}

输出结果:

<此处输入的字符为<ALT>按键,在输入中不显示字符,但计算机会自行判断。>

isspace

  函数的声明:    int isspace (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是空白字符, 如果是,则函数返回一个非0值,反之返回0。

  简单说明:判断字符 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) 回车符
#include <stdio.h>  
#include <ctype.h>  
int main() {  
    char ch;  
    printf("请输入一个字符: ");  
    scanf(" %c", &ch); // 注意前面的空格,它会跳过任何空白字符直到读取到非空白字符  
    if (isspace(ch)) {  
        printf("'%c' 是一个空白字符。\n", ch);  
    } else {  
        printf("'%c' 不是一个空白字符。\n", ch);  
    }  
    return 0;  
}

运行结果:

isdigit 

  函数的声明:int isdigit (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是十进制数字字符。如果 c 是一个数字,则该函数返回非零值,否则返回 0。

  简单说明:判断字符 C 是否为十进制数字字符。<即‘0’~‘9’之间的十进制数字>

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

int main() {
    char ch = '7'; // 可以根据需求修改测试字符

    if (isdigit(ch)) {
        printf("%c 是一个数字\n", ch);
    } else {
        printf("%c 不是一个数字\n", ch);
    }

    return 0;
}
 

运行结果:

7 是一个数字
 

islower

  函数的声明:int islower (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是小写字母 ’ a ’ ~ ' z ' 。如果 c 的ASCII码处于 ‘ a ’ ~ ' z ' 之间,则该函数返回非零值,否则返回 0。

  简单说明:判断字符 C 是否为小写字母 a ’ ~ ' z '

 代码:

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

int main() {
    char ch;
    printf("请输入一个字符:");
    scanf("%c", &ch);

    if (islower(ch)) {
        printf("%c 是小写字母\n", ch);
    } else {
        printf("%c 不是小写字母\n", ch);
    }

    return 0;
}
 

运行结果

请输入一个字符:
a
a 是小写字母

isupper

  函数的声明:int isupper (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否为字母 A ’ ~ ' Z ' 。如果 c 的ASCII码处于 ‘ A ’ ~ ' Z ' 之间,则该函数返回非零值,否则返回 0。

  简单说明:判断字符 C 是否为字母  ' A ’ ~ ' Z '

代码展示:

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

int main() {
    char ch = 'A';
    if (isupper(ch)) {
        printf("%c 是大写字母\n", ch);
    } else {
        printf("%c 不是大写字母\n", ch);
    }
    return 0;
}
 

运行结果

A 是大写字母

isalpha

  函数的声明:int isalpha (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是大写字母 A ’ ~ ' Z ' 或者’ a ’ ~ ' z '。如果 c 的ASCII码处于 ‘ A ’ ~ ' Z '’ a ’ ~ ' z '之间,则该函数返回非零值,否则返回 0。

  简单说明:判断字符 C 是否为字母  ' A ’ ~ ' Z '’ a ’ ~ ' z '

 代码展示:

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

int main() {
    char ch;
    
    printf("请输入一个字符: ");
    scanf("%c", &ch);
    
    if (isalpha(ch)) {
        printf("%c 是一个字母\n", ch);
    } else {
        printf("%c 不是一个字母\n", ch);
    }
    
    return 0;
}
 

运行结果

请输入一个字符:
a
a 是一个字母

isalnum

  函数的声明:int isalnum (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是字母或者数字 ‘ A ’ ~ ' Z ' 或者’ a ’ ~ ' z ' 或者 ’ 0 ’ ~ ' 9 '。如果 c 的ASCII码处于‘ A ’ ~ ' Z ' 或者’ a ’ ~ ' z ' 或者 ’ 0 ’ ~ ' 9 '之间,则该函数返回非零值,否则返回 0。

  简单说明:判断字符 C 是否为字母或者数字 ‘ A ’ ~ ' Z ' 或者’ a ’ ~ ' z ' 或者 ’ 0 ’ ~ ' 9 ''

 代码演示:

#include <stdio.h>
#include <ctype.h>
int main() {
    char ch;
    printf("请输入一个字符:");
    scanf("%c", &ch);
    if (isalnum(ch)) {
        printf("%c是字母或数字\n", ch);
    } else {
        printf("%c不是字母或数字\n", ch);
    }
    return 0;
}
 

运行结果:

请输入一个字符:
a
a 是一个字母或数字

ispunct

  函数的声明:int ispunct (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是标点符号字符。如果 c 是一个标点符号字符,则该函数返回非零值(true),否则返回 0(false)。

  简单说明:检查字符C是否是标点符号字符

代码:

#include <stdio.h>
#include <ctype.h>
int main()
{
   int a = 't';
   int b = '1';
   int c = '/';
   int d = ' ';

   if( ispunct(a) )
   {
       printf("a = %c 是标点符号字符\n", a );
   }
   else
   {
       printf("a = %c 不是标点符号字符\n", a );
   }
   if( ispunct(b) )
   {
       printf("b = %c 是标点符号字符\n", b );
   }
   else
   {
       printf("b = %c 不是标点符号字符\n", b );
   }
   if( ispunct(c) )
   {
       printf("c = %c 是标点符号字符\n", c );
   }
   else
   {
       printf("c = %c 不是标点符号字符\n", c );
   }
   if( ispunct(d) )
   {
       printf("d = %c 是标点符号字符\n", d );
   }
   else
   {
       printf("d = %c 不是标点符号字符\n", d );
   }
   
   return(0);
}  

运行结果

a = t 不是标点符号字符
b = 1 不是标点符号字符
c = / 是标点符号字符
d =   不是标点符号字符

isgraph

  函数的声明:int isgraph (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是图形表示法<带有图形表示法的字符是除了空白字符(比如 ' ')以外的所有可打印的字符。>。如果 c 是图形表示法,则该函数返回非零值,否则返回 0。

  简单说明:判断字符 C 是否是图形表示法

代码:

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

int main() {
    char ch;
    
    printf("请输入一个字符:");
    scanf("%c", &ch);
    
    if (isgraph(ch)) {
        printf("输入的字符是图形表示法。\n");
    } else {
        printf("输入的字符不是图形表示法。\n");
    }
    
    return 0;
}
 

执行结果:

请输入一个字符:
a
输入的字符是图形表示法。

isprint

  函数的声明:int isprint (int c); (其中,C 是要检查的字符)

  作用:检查所传的字符是否是可打印字符<可打印字符是非控制字符的字符>。如果 c 是可打印字符,则该函数返回非零值,否则返回 0。

  简单说明:判断字符 C 是否可以打印

#include <stdio.h>  
#include <ctype.h>
  
int main() {  
    char ch = 'A';  
    if (my_isprint(ch)) {  
        printf("%c 是可打印字符.\n", ch);  
    } else {  
        printf("%c 不是可打印字符.\n", ch);  
    }  
      
    return 0;  
}

执行结果:

A 是可打印字符

字符转换函数

tolower

  函数的声明:int tolower (int c); 将参数传进去的⼤写字⺟转⼩写

  作用:检查所传的字符是否是大写字母 A ’ ~ ' Z ' 。如果 c 的ASCII码处于 ‘ A ’ ~ ' Z ' ,则将其转换为对应的小写字母’ a ’ ~ ' z '之间,否则不做处理。

toupper

  函数的声明:int toupper (int c);  将参数传进去的⼩写字⺟转⼤写

 作用:检查所传的字符是否是小写字母’ a ’ ~ ' z ' 。如果 c 的ASCII码处于 ’ a ’ ~ ' z ' ,则将其转换为对应的大写字母‘ A ’ ~ ' Z '之间,否则不做处理。

尾言:

    后面会为大家介绍string库中各类函数的用法。再往后我会给大家去讲解本篇所有函数以及string中所有函数的实现,请敬请期待~

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值