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

字符分类函数与字符转化函数

前言:在c语言中有一系列的函数专门做字符分类,也就是判断一个字符是属于什么类型的,比如有数字字符124356789,大写字符ABCDE,小写字符abcde等等,这种函数的使用都需要包含一个头文件#include<ctype.h>

一:字符分类函数

1.isdigit函数

顾名思义,这个函数就是判断字符是不是数字字符,如果是的话就会返回真,我们可以写一个程序来找出一个字符数组里面的数字字符,并且将它打印出来

(1)理论分析:我们首先需要用循环来遍历这个数组的所有元素,用isdigit函数来一个一个判断是否为数字字符,如果是,那么就将它打印出来,如果不是,则跳过,让它下标+1,直至遍历完数组

(2)代码实现:

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<ctype.h> int main() { char s[] = "avd2839fdf22"; int i = 0; while (s[i]) { if (isdigit(s[i])) { printf("%c ", s[i]); } i++; } return 0; }

2.islower函数

这个函数是判断字符是否为小写字符的函数,如果是,那么返回值就为真,我们根据上面的isdigit函数,可以写一个只输出打印小写字母的程序,代码实现如下

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<ctype.h> int main() { char arr[] = "adffsfDFEfsfEFS"; int i = 0; while (arr[i]) { if (islower(arr[i])) { printf("%c ", arr[i]); } i++; } return 0; }

3.isupper函数

这个是判断字符是否为大写字母的函数,我们根据前面的经验,可以写一个只输出打印大写字母的程序,代码实现如下

int main() { char arr[] = "adffsfDFEfsfEFS"; int i = 0; while (arr[i]) { if (isupper(arr[i])) { printf("%c ", arr[i]); } i++; } return 0; }

4.大小写字母互相转换

我们可以用islower和isupper函数来互相转换大小写字母,写一个程序,将一个字符数组里面的小写字母全部转化成大写字母并将其打印

(1)理论分析:

用while循环遍历整个数组,然后用islower函数选出小写字母,我们知道,小写字母a的ASCLL码值是97,而大写字母A的ASCLL值是65,相差32,所以只需让小写字母-32,就可以得到对应的大写字符

(2)代码实现:

int main() { char str[] = "asfdSEFSsfee"; int i = 0; while (str[i]) { if (islower(str[i])) { str[i] -= 32; } i++; } printf("%s", str); return 0; }

对应的,将大写字母转化成小写字母同理,代码实现如下

int main() { char str[] = "asfdSEFSsfee"; int i = 0; while (str[i]) { if (isupper(str[i])) { str[i] += 32; } i++; } printf("%s", str); return 0; }

5.其他分类函数

除了上述提到的函数,还有其它的字符分类函数,它们的使用方法同上

  • isalpha(c)是否字母(大写 + 小写)
  • isalnum(c)是否字母或数字
  • isspace(c)是否空白字符 (空格、\t、\n、\r 等)
  • ispunct(c)是否标点符号
  • isprint(c)是否可打印字符
  • iscntrl(c)是否控制字符

二:字符转换函数

1.tolower函数

上述我们将大小写转换,是+-32的效果,有了转换函数,就可以直接用tolower函数

int main() { char s[] = "sdfsefeFESDfesf"; int i = 0; while (s[i]) { if (islower(s[i])) { s[i] = toupper(s[i]); } i++; } printf("%s", s); return 0; }

2.toupper函数

将小写直接转换为大小,也可以直接用toupper函数,原理同上,代码实现如下

int main() { char s[] = "sdfsefeFESDfesf"; int i = 0; while (s[i]) { if (isupper(s[i])) { s[i] = tolower(s[i]); } i++; } printf("%s", s); return 0; }

http://www.cnnetsun.cn/news/3677013.html

相关文章:

  • Unity责任链模式实战:游戏事件处理与代码解耦
  • 基于Whisper的Buzz离线语音转写工具全解析
  • DCQCN 拥塞控制算法原理和参数配置
  • 大模型内容生成对平台流量与创作者生态的影响分析
  • TMS320DM6446存储子系统实战:EMIF异步接口、DDR2与ATA/CF配置详解
  • 2026年1月C#/.NET生态技术演进与创新
  • PHP开源电商系统全解析:从部署到核心代码实战
  • LangChain链式调用实战:构建AI论文生成器
  • AI核心算法解析:A*搜索、粒子滤波与Q学习实战
  • 光伏微电网双下垂控制原理与Simulink仿真实践
  • UE C++开发中文乱码终极解决方案:从编码原理到工程实践
  • 北京三维动画公司怎么选?客户选型实用指南
  • 改进灰狼算法在无人机三维路径规划中的Matlab实现
  • 大语言模型自我笔记机制:提升复杂推理能力的技术解析与实践
  • 【单片机毕业设计推荐】基于 STM32 或 51 单片机的红外循迹智能小车设计与实现,基于 STM32 或 51 单片机的 L293D 驱动红外巡线小车系统设计(022203)
  • 90% 的人都搞错过的国外 AI 名词,一篇给你全理清楚
  • 强化学习在网络安全决策中的应用与优化
  • 2026年横评:16款降AIGC工具测评,TOP1竟是它!
  • LLM提示工程技术债务管理与治理框架
  • 基于曼哈顿距离的DDR3 PCB布线:TI AM389x系统信号完整性设计实战
  • Python性能优化与懒加载技术实践
  • 专业二维码生成器选购指南与实用技巧
  • 构建系统优化:增量编译与缓存命中率提升
  • Agent 工作流的异常处理:失败可恢复的执行设计
  • C++高并发Channel模块:无锁环形缓冲区与混合同步策略实现
  • 大模型训练全流程:从数据准备到部署优化
  • 【工业级文本摘要Prompt标准】:基于1376份真实业务文档测试,准确率提升41.6%的6大结构范式
  • 拍照检测软件 显示器泄密 2026企业终端物理防泄密系统实力TOP6排行
  • 嵌入式开发外设时序解析:从eHRPWM到I2C/UART的实战配置与避坑指南
  • TMS320F281x DSP串行Flash编程:基于Boot ROM的自主可控烧录方案