news 2026/7/27 5:58:49

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
字符分类函数与字符转化函数

前言:在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; }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 5:56:21

Unity责任链模式实战:游戏事件处理与代码解耦

1. 项目概述&#xff1a;为什么Unity开发者需要掌握责任链模式&#xff1f;如果你在Unity里写过稍微复杂一点的逻辑&#xff0c;比如处理一个UI按钮点击后要经过登录验证、资源检查、冷却判断、最终执行一连串操作&#xff0c;或者处理一个游戏事件需要被多个系统&#xff08;音…

作者头像 李华
网站建设 2026/7/27 5:56:07

基于Whisper的Buzz离线语音转写工具全解析

1. 项目概述&#xff1a;Buzz离线语音转写工具去年我在处理一批敏感会议录音时&#xff0c;发现主流云服务要么需要上传音频到第三方服务器&#xff0c;要么转写准确率惨不忍睹。直到遇到这个基于Whisper的Buzz项目——一个完全离线运行的语音转写工具&#xff0c;隐私保护和准…

作者头像 李华
网站建设 2026/7/27 5:54:32

DCQCN 拥塞控制算法原理和参数配置

1. DCQCN 拥塞控制算法概述 在现代数据中心网络中&#xff0c;RDMA over Converged Ethernet (RoCEv2) 已成为高性能分布式存储和 AI 训练集群的主流通信协议。RDMA 要求网络提供 无损传输能力&#xff0c;这对拥塞控制提出了严苛挑战。 DCQCN&#xff08;Data Center Quanti…

作者头像 李华
网站建设 2026/7/27 5:52:50

大模型内容生成对平台流量与创作者生态的影响分析

这次我们来探讨一个直接影响用户体验和平台生态的问题&#xff1a;当大模型不再把用户送回内容平台&#xff0c;会如何收场&#xff1f;这个问题看似简单&#xff0c;背后却涉及技术路线、商业模式和用户习惯的多重博弈。从技术发展角度看&#xff0c;大模型正在从单纯的问答工…

作者头像 李华
网站建设 2026/7/27 5:50:48

TMS320DM6446存储子系统实战:EMIF异步接口、DDR2与ATA/CF配置详解

1. 项目概述与核心价值在嵌入式系统开发&#xff0c;尤其是基于德州仪器&#xff08;TI&#xff09;DaVinci系列数字媒体处理器的项目中&#xff0c;外部存储器接口&#xff08;EMIF&#xff09;和ATA/CF控制器是决定系统性能与稳定性的两大基石。我接触过不少项目&#xff0c;…

作者头像 李华
网站建设 2026/7/27 5:48:04

2026年1月C#/.NET生态技术演进与创新

1. 2026年1月C#/.NET生态全景扫描2026年的第一个月&#xff0c;.NET生态又迎来一波令人振奋的技术演进。作为深耕这个领域十余年的老开发者&#xff0c;我每月都会系统梳理GitHub趋势榜、NuGet下载数据和社区讨论热点&#xff0c;以下是这个月特别值得关注的20个明星项目和框架…

作者头像 李华