C语言——字符函数

前言

字符函数是C语言中专门用来处理字符的函数,再C语言中,我们有时需要大量的处理有关字符的问题,所以字符函数就由此应运而生,接下来我来为大家简单介绍一下字符函数。

一.字符分类函数

函数如果它的参数满足下列条件就返回真
iscntrl任何控制字符
isspace空白字符:空格“ ”,换页'\f',换行'\n',回车'\r',制表符'\t'和垂直制表符'\v'
isdigit十进制数字0~9
isxdigit十六进制,包含所有十进制数字,小写字母a~f,大写字母A~F
islower

小写字母a~z

isupper大写字母A~Z
isalpha字母a~z或A~Z
isalnum字母或数字,a~z,A~Z,0~9
ispunct标点符号,任何不属于数字或字母的图形字符(可打印)
isgraph任何图形字符
isprint任何可打印字符,包括图形字符和空白字符 

接下来,我会举几个字符分类函数的例子,帮助大家理解。

1.iscntrl函数

iscntrl函数的作用是识别控制字符,传来的参数如果是控制字符则返回真,即非0值,否则返回0

//int iscntrl(int c)      
//只要参数是控制字符,就返回非0值,否之返回0
//实际上传给iscntrl的是该字符的ASCII码值int main()
{int ret1 = iscntrl('\t');//'\t'是控制字符,所以返回非0值int ret2 = iscntrl('x');//'x'不是控制字符,所以返回0printf("%d %d\n", ret1,ret2);return 0;
}

结果:

2.isspace函数

isspace函数的作用是识别空白字符,只要是空白字符就返回真,非0;否则返回假,0


 

//int isspace(int c)       只要参数是空白字符就返回非0值,否之返回0
int main()
{int ret1 = isspace('\n');//'\n'换行符是空白字符,所以会返回非0值int ret2 = isspace('a');//'a'是可打印字符,不是空白字符,所以返回0printf("%d %d\n", ret1,ret2);return 0;
}

结果为:

3.isdigit函数

isdigit是识别数字字符函数,只要传来的字符参数属于0~9,就返回非0值,否则返回0

//int isdigit(int c)   参数属于0~9,则返回非0值,不属于返回0
int main()
{int ret1 = isdigit('0');int ret2 = isdigit('z');printf("%d %d\n", ret1, ret2);return 0;
}

结果为:

4.字符分类函数小结

我在上面给大家介绍了三个字符分类函数的用法,其他的函数用法与之相似,大家可自行验证。下来,我利用islower函数来实现将小写字母转换为大写字母的代码。

#include <stdio.h>
#include <ctype.h>
#include <string.h>int main()
{char arr[] = "i love china";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (islower(arr[i]))//如果是小写字母则返回非0,并转化为大写字母{arr[i] -= 32;}}printf("%s", arr);return 0;
}

isupper与islower函数功能相似,前者识别大写字母,后者识别小写字母。使用前者可以实现将大写字母转换为小写字母。

#include <stdio.h>
#include <ctype.h>
#include <string.h>int main()
{char arr[] = "I LOVE CHINA FOREVER";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (isupper(arr[i]))//如果是大写字母则返回非0,并转化为小写字母{arr[i] += 32;}}printf("%s", arr);return 0;
}

除此之外,我们可以将这两者联系起来,实现大小写的互相转化。

二.字符转换函数

1.tolower函数

从函数名来分析,我们就可以的值得知,该函数可以将传进去的参数转换为小写字母,如果传进去的本来就是小写字母,则不变。我们上面利用isupper函数实现了将大写字母转化为小写字母,下来我们再利用tolower函数实现将大写字母转化为小写字母。

#include <stdio.h>
#include <ctype.h>
#include <string.h>int main()
{char arr[] = "HELLO WORLD";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (isupper(arr[i]))//判断是否为大写字母{arr[i] = tolower(arr[i]);//将大写字母转化为小写字母,相当于完成了+32的操作}}printf("%s\n", arr);return 0;
}

有的人会问:既然tolower可以将大写转化为小写,小写不受影响,那为什么不直接将所有字符都传给该函数?这就涉及到效率的问题,如果每次都调用该函数会导致程序效率降低,所以可以先进行判断,后将判断为真的字符转化为小写字母。

2.toupper函数

该函数与tolower函数异曲同工,该函数是将小写字母转化为大写字母,如果本来就是大写字母则不发生改变。我们现在利用该函数实现将小写字母转化为大写字母。

//toupper函数
//将传进去的参数转化为大写字母,如果本来就是大写字母则不改变
int main()
{char arr[] = "hello world";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (islower(arr[i]))//判断是否为大写字母{arr[i] = toupper(arr[i]);//将小写字母转化为大写字母,相当于完成了-32的操作}}printf("%s\n", arr);return 0;
}

总结

我们在日常生活中经常会遇到需要处理字符的问题,有了这些函数就可以方便我们对字符的操作,之前我们判断其是不是小写字母(arr[i]>='a'&&arr[i]<='z'),这样非常麻烦,有了这些函数之后就可以非常方便的判断是不是我们需要的字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/563184.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 中 苹果眼镜开发入口

1. 文档介绍了Unity对Apple新操作系统visionOS的支持。 2. Unity提供了完善的文档、模板和支持,帮助开发者快速为visionOS开发应用。 3. Unity的跨平台框架AR Foundation和XR Interaction Toolkit可以帮助现有移动和XR应用无缝迁移到visionOS。 4. 在visionOS上,可以利用Uni…

数据库之MongoDB应用与开发

MongoDB应用与开发 1. MongoDB安装 l 官网下载安装介质&#xff1a; Try MongoDB Atlas Products | MongoDB 选择对应版本 修改环境变量 vi /etc/profile export MONGODB_HOME/home/lijin/mongodb export PATH P A T H : PATH: PATH:MONGODB_HOME/bin source /etc/profile …

行政工作常用表格

企业管制制度大全https://www.chuandao100.com/279.html

深度学习 (正则化 权重衰减解决过拟合 欠拟合)

权重衰减&#xff1a; 深度学习中的权重衰减&#xff08;weight decay&#xff09;是一种正则化技术&#xff0c;用于防止过拟合。它通过对模型的损失函数添加一个正则化项&#xff0c;来惩罚模型的权重参数。 在权重衰减中&#xff0c;模型的损失函数会由原来的仅考虑预测误差…

CSS3 中的盒模型:标准与IE盒模型的差异

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

C/C++之内存旋律:星辰大海的指挥家

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、C/C内存分布 我们先来了解一下C/C内存分配的几个区域&#xff0c;以下面的代码为例来看…

Install Docker

Docker Desktop 直接安装 Docker Desktop Docker Desktop includes the Docker daemon (dockerd), the Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper. Linux下安装Docker CE 参考官方文档 参见阿里云的文档 # step 1…

Jackson 2.x 系列【3】解析器 JsonParser

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 解析原理3. 案例演示3.1 创建 JsonParser3.2 解析3.3 读取3.4 测试 1. 前…

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework

目录 论文地址&#xff1a;Mora: Enabling Generalist Video Generation viaA Multi-Agent Framework github地址&#xff1a;https://github.com/lichao-sun/Mora 一、摘要 &#xff08;1&#xff09;Mora 的主要特点&#xff1a; &#xff08;2&#xff09;Mora的应用场景…

黑马Go语言基础深入浅出

教程介绍 Go语言的优势&#xff0c;可直接编译成机器码&#xff0c;不依赖其他库&#xff0c;glibc的版本有一定要求&#xff0c;部署就是扔一个文件上去就完成了。静态类型语言&#xff0c;但是有动态语言的感觉&#xff0c;静态类型的语言就是可以在编译的时候检查出来隐藏的…

安装paddle detection心得

一、安装PaddlePaddle conda create -n mypaddle python3.8 conda activate mypaddle python -m pip install paddlepaddle-gpu2.6.0 -i https://mirror.baidu.com/pypi/simple 请确保您的PaddlePaddle安装成功并且版本不低于需求版本。使用以下命令进行验证。 这是CUDA1…

vue 修改element-plus主题色

一、安装SCSS npm install sass --save-dev npm install sass-loader --save-dev npm install node-sass --save-dev npm install vue-style-loader --sava-dev 二、添加主题文件theme.scss forward "element-plus/theme-chalk/src/common/var.scss" with ($col…