c语言学习之——<ctype.h>库的介绍

写这篇文章的起因是在练习算法的过程中遇到了isalnum()函数,而自己又对此很陌生。查资料的时候又发现此函数涉及到c的一个标准库,干脆直接对库进行一个总结。以下正文为总结内容。


目录

 一、简介

二、库函数

1、isalnum()函数

2、isalpha()函数

3、isdigit()函数

4、islower()函数

5、isupper()函数

6、iscntrl()函数

7、isgraph()函数

8、isprint()函数

9、ispunct()函数

10、isspace()函数

11、issdigit()函数

12、tolower()函数

13、toupper()函数


 一、简介

ctype.h 头文件提供了一些函数,可用于测试和映射字符。

这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符。

如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。

注意:

  • ctype.h 中的函数和宏定义的参数都是  int  类型,但它们实际上应该是用来表示字符的整数值。这是因为  char  类型会自动被提升为 int  类型进行处理。
  • 虽然  int  类型参数可以接受范围从 -128 ~ 127 的值,但 ctype.h 中的函数和宏定义预期的参数范围只是 unsigned char 和 EOF 的值,这是保证了正确处理各种字符的关键。
  • ctype.h 中的函数和宏定义预期的字符是基于 ASCII 字符集的,即字符的编码在 0  ~ 127 的范围内。对于其它字符集或扩展字符集,ctype.h 中的函数和宏定义的行为可能会有问题。

二、库函数

以下为该<ctype.h>包含的字符测试函数

函数原型功能

int isalnum(int c)

判断字符是否是字母和数字。

int isalpha(int c)

判断字符是否是字母。

int isdigit(int c)

判断字符是否是十进制数字。

int islower(int c)

判断字符是否是小写字母。

int isupper(int c)

判断字符是否是大写字母。

int iscntrl(int c)

判断字符是否是控制字符。

int isgraph(int c)

判断字符是否有图形表示法。

int isprint(int c)

判断字符是否是可打印的。

int ispunct(int c)

判断字符是否是标点符号字符。

int isspace(int c)

判断字符是否是空白字符。

int isxdigit(int c)

判断字符是否是十六进制数字。

1、isalnum()函数

检查所传的字符是否是字母或数字

示例:

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

int main()
{
     char a = 'g', b = '3', c = 'T', d = '?';

    printf("传入字符 '%c' ,返回值:%d\n", a, isalnum(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, isalnum(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, isalnum(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, isalnum(d));
    
    return 0;
}

运行结果:

2、isalpha()函数

检查所传的字符是否是字母

示例:

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

int main()
{
    char a = 'a', b = '5', c = ' ';

    printf("传入字符 '%c' ,返回值:%d\n", a, isalpha(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, isalpha(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, isalpha(c));
    
    return 0;
}

运行结果:

3、isdigit()函数

检查所传的字符是否是数字( 0 ~ 9 )。

示例:

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

int main()
{
    char a = 'b', b = '3', c = '\t', d = '[';

    printf("传入字符 '%c' ,返回值:%d\n", a, isdigit(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, isdigit(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, isdigit(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, isdigit(d));
    
    return 0;
}

运行结果:

 

4、islower()函数

检查所传的字符是否是小写字母( a ~ z )。

示例:

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

int main()
{
    char a = 'a', b = '2', c = 'A', d = '>';

    printf("传入字符 '%c' ,返回值:%d\n", a, islower(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, islower(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, islower(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, islower(d));
    
    return 0;
}

运行结果:

 

5、isupper()函数

检查所传的字符是否是大写字母(A ~ Z)。

示例:

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

int main()
{
    char a = 'a', b = '2', c = 'A', d = '>';

    printf("传入字符 '%c' ,返回值:%d\n", a, isupper(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, isupper(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, isupper(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, isupper(d));
    
    return 0;
}

运行结果:

6、iscntrl()函数

检查所传的字符是否是控制字符(ASCII码值为 0~31 和 127(DEL))

示例:

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

int main()
{
    char a = ' ', b = '2', c = '\t', d = '\a';

    printf("传入字符 '%c' ,返回值:%d\n", a, iscntrl(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, iscntrl(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, iscntrl(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, iscntrl(d));
    
    return 0;
}

运行结果:

 

7、isgraph()函数

检查所传的字符是否有图形表示法一个字符在计算机显示器或其他设备上是否有对应的可见图形呈现出来

示例:

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

int main()
{
    char a = ' ', b = '2', c = '\t', d = '\a';

    printf("传入字符 '%c' ,返回值:%d\n", a, isgraph(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, isgraph(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, isgraph(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, isgraph(d));
    
    return 0;
}

运行结果:

 

8、isprint()函数

检查所传的字符是否是可打印的。

示例:

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

int main()
{
    char a = ' ', b = '2', c = '\t', d = '\a', e = '!';

    printf("传入字符 '%c' ,返回值:%d\n", a, isprint(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, isprint(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, isprint(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, isprint(d));
    printf("传入字符 '%c' ,返回值:%d\n", e, isprint(e));
    
    return 0;
}

运行结果:

 

9、ispunct()函数

检查所传的字符是否是标点符号字符

示例:

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

int main()
{
    char a = ' ', b = '*', c = '\t', d = 'a', e = '!';

    printf("传入字符 '%c' ,返回值:%d\n", a, ispunct(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, ispunct(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, ispunct(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, ispunct(d));
    printf("传入字符 '%c' ,返回值:%d\n", e, ispunct(e));
    
    return 0;
}

运行结果:

 

10、isspace()函数

检查所传的字符是否是空白字符(指在屏幕上不显示字符形状的 ASCII 控制字符,包括空格字符(Space)、制表符(Tab)、换行符(Line Feed)、回车符(Carriage Return)和垂直制表符(Vertical Tab)。这些字符用于格式化文本,设置间距,调整光标位置等)。

示例:

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

int main()
{
    char a = ' ', b = '\n', c = '\t', d = '\r', e = '\v';

    printf("传入字符 '%c' ,返回值:%d\n", a, isspace(a));//空格
    printf("传入字符 '%c' ,返回值:%d\n", b, isspace(b));//换行
    printf("传入字符 '%c' ,返回值:%d\n", c, isspace(c));//制表符
    printf("传入字符 '%c' ,返回值:%d\n", d, isspace(d));//回车
    printf("传入字符 '%c' ,返回值:%d\n", e, isspace(e));//垂直制表符
    
    return 0;
}

运行结果:

11、issdigit()函数

检查所传的字符是否是十六进制数字(0 ~ 9、a ~ f、A ~ F)。

示例:

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

int main()
{
    char a = '@', b = 'h', c = '5', d = 'c';

    printf("传入字符 '%c' ,返回值:%d\n", a, isxdigit(a));
    printf("传入字符 '%c' ,返回值:%d\n", b, isxdigit(b));
    printf("传入字符 '%c' ,返回值:%d\n", c, isxdigit(c));
    printf("传入字符 '%c' ,返回值:%d\n", d, isxdigit(d));
    
    return 0;
}

运行结果:


<ctype.h>标准库还包含了两个字符映射函数(不改变原始参数值)

函数原型功能
int tolower(int c)参数为大写字母返回小写字母,否则返回原参数
int toupper(int c)参数为小写字母返回大写字母,否则返回原参数

 

12、tolower()函数

把大写字母转换为小写字母。

示例:

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

int main()
{
    char str[] = {"Get SOO@! 2024"};
    int i = 0;
    
    while(str[i] != 0)
    {
        putchar(tolower(str[i++]));
    }

    return 0;
}

运行结果:

13、toupper()函数

把小写字母转换为大写字母。

示例:

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

int main()
{
    char str[] = {"Get SOO@! 2024"};
    int i = 0;

    while(str[i] != 0)
    {
        putchar(toupper(str[i++]));
    }

    return 0;
}

运行结果:

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值