当前位置: 首页 > news >正文

C/C++中对字符处理的常用函数

        C语言中的 ctype.h 头文件提供了一系列字符分类和转换函数,用于高效处理字符相关操作。这些函数通过接受 int 类型参数(需为 unsigned char 或 EOF (-1)值),返回非零值表示条件正确,返回0表示错误。以下是常用函数的分类介绍:

 一、字符测试函数


1.  isalnum(int c)

        判断 字符 c 是否为字母或数字( a-z、A-Z、0-9 )

        isalnum(int c)
           判断 字符 c 是否为字母或数字( a-z、A-Z、0-9 )

                是 则返回非0值,否 则返回0;

char a;
if(isalnum(a)) //判断字符a是否为字母或数字( a-z、A-Z、0-9 )。
{
    printf("a是字母或数字");
}
else
{
    printf("a不是字母或数字");
}

        验证用户名是否合法时常用此函数。

2.  isalpha(int c)

判断 字符 c 是否为字母( a-z、A-Z )

        isalpha(int c)

         判断 字符 c 是否为字母( a-z、A-Z )

                是 则返回非0值,否 则返回0;

char a;
if(isalpha(a)) //判断字符a是否为字母( a-z、A-Z )。
{
    printf("a是字母");
}
else
{
    printf("a不是字母");
}

常用于过滤非字母字符。

3. isdigit(int c)

        判断 字符 c 是否为数字( 0-9 )

         isdigit(int c)

        判断 字符 c 是否为数字( 0-9 )

                是 则返回非0值,否 则返回0;

char a;
if(isdigit(a)) //判断字符a是否为数字( 0 - 9 )。
{
    printf("a是数字");
}
else
{
    printf("a不是数字");
}

适合验证输入是否为纯数字。

4.  isspace(int c)

        判断 字符 c 是否为空白字符( 空格`' '`、换行符`\n`、制表符`\t`等 )

        isspace(int c) 

        判断 字符 c 是否为空白字符( 空格`' '`、换行符`\n`、制表符`\t`等 )

                是 则返回非0值,否 则返回0;

char a;
if(isspace(a)) //判断字符a是否为空白字符( 空格`' '`、换行符`\n`、制表符`\t`等 )。
{
    printf("a是空白字符");
}
else
{
    printf("a不是空白字符");
}

常用于解析文本格式。

5.  islower(int c) 和  isupper(int c) 

分别判断`c`是否为小写字母(`a-z`)或大写字母(`A-Z`)

        islower(int c) 和  isupper(int c) 

        分别判断`c`是否为小写字母(`a-z`)或大写字母(`A-Z`)

        是 则返回非0值,否 则返回0;

char a;
if(islower(a)) //判断字符a是否为小写字母( a~z )
{
    printf("a是小写字母");
}
else
{
    printf("a不是小写字母");
}


char a;
if(islower(a)) //判断字符a是否为大写字母( A ~ Z)
{
    printf("a是大写字母");
}
else
{
    printf("a不是大写字母");
}

可用于大小写敏感的场景。

6.  isxdigit(int c)

       判断`c`是否为十六进制数字( 0-9 、 a-f 、 A-F )

        isxdigit(int c)

        判断`c`是否为十六进制数字( 0-9 、 a-f 、 A-F )

        是 则返回非0值,否 则返回0;

char a;
if(islower(a)) //判断字符a是否为十六进制数字( 0-9 、 a-f 、 A-F )
    printf("a是十六进制数字");
}
else
{
    printf("a不是十六进制数字");
}

适用于解析十六进制字符串。 

7.  ispunct(int c)

      判断`c`是否 为标点符号(如`!`、`?`等)

        ispunct(int c)

        判断`c`是否 为标点符号(如`!`、`?`等)

        是 则返回非0值,否 则返回0;

char a;
if(islower(a)) //判断字符a是否为标点符号(如`!`、`?`等)
    printf("a是标点符号");
}
else
{
    printf("a不是标点符号");
}


   用于过滤非字母数字符号。

8.  isprint(int c)和isgraph(int c)

      判断 c 是否 为可打印字符(包括空格),而 isgraph(int c) 则排除空格,用于控制输出格式。

        isprint( int c)和isgraph( int c )

        判断 c 是否 为可打印字符(包括空格),而 isgraph(int c) 则排除空格,用于控制输出格式。

        是 则返回非0值,否 则返回0;

char a;
if(isprint(a)) //判断字符a是否为可打印字符(包括空格)
    printf("a是可打印字符(包括空格)");
}
else
{
    printf("a不是可打印字符(包括空格)");
}

char a;
if(isgraph(a)) //判断字符a是否为可打印字符(不包括空格)
    printf("a是可打印字符(不包括空格)");
}
else
{
    printf("a不是可打印字符(不包括空格)");
}

用于控制输出格式。

 二、字符转换函数


1.  tolower(int c)

 将大写字母转换为小写字母,若`c`不是大写字母则返回原值。


   将大写字母转换为小写字母,若`c`不是大写字母则返回原值。

char c = A;
char c = tolower(c); // 将 A 转换成 a

统一用户名格式时使用。

2. toupper(int c)

 将小写字母转换为大写字母,若 'c' 非小写字母时返回原值。


   将小写字母转换为大写字母,若 'c' 非小写字母时返回原值。

char c = a;
char c = toupper(c); // 将 a 转换成 A

适用于生成统一格式的字符串。

 三、应用场景


- 输入验证:如使用 isdigit 确保用户输入的是数字,或 isalpha 限制只能输入字母。
- 字符串处理:通过 tolower / toupper 统一字符串大小写,或利用 isspace 分割单词。
- 数据解析:例如用 isxdigit 解析十六进制颜色代码,或 ispunct 过滤标点符号。

 四、注意事项


- 参数范围:传入的`int`值需在`0-255`或`EOF`范围内,否则可能导致未定义行为。
- 本地化影响:
部分函数(如 isspace)的行为可能受本地化设置影响,需注意跨平台兼容性。

通过合理使用这些函数,可以避免手动编写字符判断逻辑,提升代码的可读性和可维护性。

相关文章:

  • AutoGen智能体代码解读
  • [Ai 力扣题单] 数组基本操作篇 27/704/344
  • 4.Kettle调度oracle任务设置邮件预警功能
  • 解决ElementPlus对话框el-dialog中关闭事件重复触发问题
  • Android Retrofit 请求执行模块执行原理深入源码分析(三)
  • 力扣hot100二刷——链表
  • Pac-Man(吃豆人) 游戏
  • Redis 缓存数据库
  • Node.js:快速启动你的第一个Web服务器
  • 考研数学非数竞赛复习之Stolz定理求解数列极限
  • IP 地址
  • 跳表数据结构
  • 大数据学习(63)- Zookeeper详解
  • 索引-最左匹配
  • 【项目设计】基于AMQP协议实现的简单消息队列
  • android okhttp几种日志拦截级别区别
  • 数据可视化图表库LightningChart JS 全新发布v7.0——提高视觉质量
  • 7-9 抢红包
  • 从技术创新到全球布局:MOVA割草机器人以尖端科技定义智能园艺
  • 电脑一直重启怎么解决 原因及解决方法
  • 解放日报头版聚焦“人民城市”:共建共享展新卷
  • 西班牙葡萄牙遭遇史上最严重停电:交通瘫了,通信崩了,民众疯抢物资
  • 非法收受财物逾1648万,湖南原副厅级干部康月林一审被判十年半
  • 找化学的答案,解人类的命题:巴斯夫的“变革者”成长之道
  • 外交部:欢迎外国朋友“五一”来中国
  • 影子调查丨危房之下,百余住户搬离梦嘉商贸楼