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'不是控制字符,所以返回0
	printf("%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'是可打印字符,不是空白字符,所以返回0
	printf("%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'),这样非常麻烦,有了这些函数之后就可以非常方便的判断是不是我们需要的字符。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

钡铼R40工业4G路由器保障智能物流仓储系统高效运行

随着物流行业的不断发展和智能化技术的广泛应用&#xff0c;智能物流仓储系统已成为提升物流效率、降低成本、提高服务质量的重要手段。在这样的背景下&#xff0c;钡铼R40工业4G路由器作为一种先进的网络通信设备&#xff0c;在智能物流仓储系统中扮演着关键的角色&#xff0c…

Docker学习笔记 - 常用命令

目录 基本概念常用命令使用docker compose启动脚本创建自己的image Docker命令文档 1. 下载一个image 从hub.docker.com下载一个image。 docker pull [image name]下载时指定image的tag。 docker pull [image name]:<tag>举例&#xff0c;下载postgre的tag为alpine…

重学SpringBoot3-MyBatis的三种分页方式

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-MyBatis的三种分页方式 准备工作环境搭建数据准备未分页效果 1. 使用MyBatis自带的RowBounds进行分页演示 2. 使用物理分页插件演示 3. 手动编写分页SQL…

算法体系-12 第 十二 二叉树的基本算法 下

一 实现二叉树的按层遍历 1.1 描述 1&#xff09;其实就是宽度优先遍历&#xff0c;用队列 2&#xff09;可以通过设置flag变量的方式&#xff0c;来发现某一层的结束&#xff08;看题目&#xff09;看下边的第四题解答 1.2 代码 public class Code01_LevelTraversalBT {publ…

ChatGPT无法登录,提示我们检测到可疑的登录行为?如何解决?

OnlyFans 订阅教程移步&#xff1a;【保姆级】2024年最新Onlyfans订阅教程 Midjourney 订阅教程移步&#xff1a; 【一看就会】五分钟完成MidJourney订阅 GPT-4.0 升级教程移步&#xff1a;五分钟开通GPT4.0 如果你需要使用Wildcard开通GPT4、Midjourney或是Onlyfans的话&am…

分享:vue3+OpenTiny UI+cesium 实现三维地球

效果图 使用vue3 OpenTiny UI cesium 实现三维地球 node.js > v16.0 opentiny vue3 ui安装指南 https://opentiny.design/tiny-vue/zh-CN/os-theme/docs/installation yarn add opentiny/vue3 项目依赖 "dependencies": {"opentiny/vue": "3…

洛谷_P1873 [COCI 2011/2012 #5] EKO / 砍树_python写法

P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) n, m map(int,input().split())data list(map(int,input().split())) h 0 def check(mid):h 0for i in data:if i>mid:h (i-mid)if h < m:return Trueelse:return Falsel 0 r …

工作需求,Vue实现登录

加油&#xff0c;新时代打工人&#xff01; vue 2.x Element UI <template><div class"body" :style"{background-image: url(${require(/assets/images/login.png)})}"><el-form :rules"rules" ref"loginForm" :mode…

【AI】发现一款运行成本较低的SelfHosting语言模型

【背景】 作为一个想构建局域网AI服务的屌丝,一直苦恼的自然是有限的资源下有没有对Spec要求低一点的SelfHosting的AI服务框架了。今天给大家介绍这款听起来有点希望,但是我也还没试验过,感兴趣的可以去尝试看看。 【介绍】 大模型生成式AI与别的技术不同,由于资源要求高…

PHP+MySQL开发组合:智慧同城便民信息小程序源码系统 带完整的安装代码包以及安装部署教程

当前&#xff0c;城市生活的节奏日益加快&#xff0c;人们对各类便民信息的需求也愈发迫切。无论是寻找家政服务、二手交易&#xff0c;还是发布租房、求职信息&#xff0c;一个高效、便捷的信息平台显得尤为重要。传统的信息发布方式往往存在信息更新不及时、查找困难等问题&a…

数据结构难点——线索二叉树的详解

线索二叉树 线索二叉树的出现中序二叉树不使用中序线索二叉树使用中序线索二叉树&#xff08;难点&#xff09; 注&#xff1a; 在阅读这篇文章之前&#xff0c;建议读者先掌握递归的概念和原理&#xff0c;以便更好地理解和欣赏文章中的内容。 线索二叉树的出现 普通二叉树的…

NFT交易市场-后端开发

首先我们需要配置好我们的ipfs&#xff0c;参考官方文档 1.https://docs.ipfs.tech/install/command-line/#system-requirementshttps://docs.ipfs.tech/how-to/command-line-quick-start/#initialize-the-repository 首先新建一个文件夹 然后在终端输入npm init -y命令进行初…

docker 和K8S知识分享

docker知识&#xff1a; 比如写了个项目&#xff0c;并且在本地调试没有任务问题&#xff0c;这时候你想在另外一台电脑或者服务器运行&#xff0c;那么你需要在另外一台电脑或者服务器配置相同的软件&#xff0c;比如数据库&#xff0c;web服务器&#xff0c;必要的插件和库等…

QT学习第一天,创建工程文件,创建按钮,对象树的概念

创建qt 方式一&#xff1a;欢迎》project》new project 方式二&#xff1a;菜单栏》文件》新建文件或项目 打开项目 方式1&#xff1a; 欢迎》project》open project 方式2&#xff1a;打开目录&#xff08;页面上不存在的项目&#xff09; 创建工程时需要注意&#xff1…

try langchain (by quqi99)

作者&#xff1a;张华 发表于&#xff1a;2024-03-18 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99) 基于Gemma的测试环境搭建 想学习一个langchain, 所以先运行一下langchain…

8个国产全能型AI写作神器,给个标题就能自动生成全文 #其他#知识分享

国外ChatGPT爆火&#xff0c;AI写作在国内也引起不小的瞩目&#xff0c;目前国内的AI写作工具少说也有几十上百个&#xff0c;要在这么多AI写作中找出适合自己的工具&#xff0c;一个一个尝试是不太现实的&#xff0c;所以今天就给大家推荐一些款AI写作工具。帮助你少走弯路&am…

【黄啊码】使用cloudflare搭建OpenAI的接口

现在&#xff0c;我们可以使用cloudflare自己搭建一个OpenAI代理服务&#xff0c;使用我们自己的转发代理 第一步&#xff1a;注册cloudflare账号 前往官方网站注册一个账户 第二步&#xff1a;创建worker&#xff0c;进行请求中转 名字可以自己随便取一个&#xff0c;点击快…

GraalVM详细安装及打包springboot、java、javafx使用教程(打包springboot3篇)

前言 在当前多元化开发环境下&#xff0c;Java作为一种广泛应用的编程语言&#xff0c;其应用部署效率与灵活性的重要性日益凸显。Spring Boot框架以其简洁的配置和强大的功能深受开发者喜爱&#xff0c;而JavaFX则为开发者提供了构建丰富桌面客户端应用的能力。然而&#xff…

STC89C52单片机启动--综合案例秒表

代码功能&#xff1a; 1.自动开始计数&#xff0c;一共5个数码管来显示时间。一位数码管显示0-9&#xff0c;对应分度值是0.1s&#xff1b;两位数码管显示00-59&#xff0c;对应分度值1s&#xff1b;两位数码管显示00-59&#xff0c;对应分度值1min&#xff1b;上电后自动开始计…

C# 提示信息的几种方式,总有一种是你不知道的

很久没写文章了&#xff0c;今天有时间就总结一下关于提示信息的几种写法。 &#xff08;1&#xff09;第一种提示信息是winform中的提示信息MessageBox.Show() 开发C#的朋友们肯定都用过这个提示信息&#xff0c;这个方法中有几个参数。 平时用的比较多的形式有&#xff1a;…