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

字符分类函数和字符串函数

在这里插入图片描述
Hello~,欢迎大家来到我的博客进行学习!

目录

  • 1.字符分类函数😘
    • 1.1解释以及使用🤯
    • 1.2将字符分类函数组合使用👻
    • 2 .字符转换函数🧐

1.字符分类函数😘

1.1解释以及使用🤯

在键盘上敲的字符有许多种类,如:abcdef这样的字母,‘1’、'2’这样的数字字符。在C语言中有一系列的函数是可以分辨字符到底属于哪一类的,该一系列的函数叫做字符分类函数。这些函数的使用都需要包含一个头文件ctype.h
在这里插入图片描述
在这里我选择几个进行讲解,它们的使用方法是一样的。
首先我先对islower(判断一个字符是不是小写字母)进行讲解。

#include<stdio.h>
#include<ctype.h>
int main()
{
	int ret = islower('A');
	printf("%d\n", ret);
	return 0;
}

运行结果:
在这里插入图片描述
那它的判断方法是什么呢?为何得出0这个值。
在这里插入图片描述这里的意思是:
如果传入的值是小写字母的话,会返回一个非0的值。如果传入的不是小写字母的话,返回0。
了解使用原理之后,我们可以采用以下方法进行运用。

#include<stdio.h>
#include<ctype.h>
int main()
{
	int ret = islower('X');
	if (ret)
		printf("小写\n");
	else
		printf("大写\n");
	return 0;
}

运行结果:
在这里插入图片描述
现在我对isdigit(判断是不是’0’到’9’的数字字符)进行讲解:

#include<stdio.h>
#include<ctype.h>
int main()
{
	int ret = isdigit('X');
	printf("%d\n", ret);
	return 0;
}

运行结果:
在这里插入图片描述
对于传给isdigit函数的字符,如果是数字字符,会返回非0的值,反之返回0。
此时,我们已经学会如何使用字符分类函数,这些函数是可以组合使用的。

1.2将字符分类函数组合使用👻

要求:
写一个函数,将字符串中的小写字母转大写字母,其他字符不变。
现在假设我们有一个字符串hi,I am a student.,里面可以有 ,和 . 这样的字符。我们要将这个字符串里面的小写字母转大写字母的话,需要遍历整个字符串。

char arr[] = "hi,I am a student."

这里其实我们可以想象有一个下标i,从0开始然后1,2,3…一直下去。此时我们就可以利用i下标不停的往后遍历,所以我们这里可以引入一个int类型的i,并利用while循环,里面的条件写arr[i]。因为该字符串的末尾隐藏着一个\0,\0的ASCII码是0,0为假,当我们遍历完整个数组就会停下。
当我们拿到一个字符时,我们需要进行判断是否为小写字母,就需要运用islower函数。如果为小写字母就需要转换为大写字母,小写字母与大写字母的ASCII码值相差32。最后我们打印看结果。

#include<stdio.h>
#include<ctype.h>
int main()
{
	char arr[30] = "hi,I am a student.";
	int i = 0;
	while (arr[i])
	{
		if (islower(arr[i]))
		{
			arr[i] = arr[i] - 32;
		}
		i++;
	}
	printf("%s\n", arr);
	return 0;
}

运行结果:
在这里插入图片描述
从运行结果我们可以看出,原来是大写的还是大写,原来是小写的转换为了大写。

2 .字符转换函数🧐

C语言提供了2个字符转换函数:

int tolower(int c);
int toupper(int c);

toupper是转大写的转换函数,将参数传进去的小写写字母转大写,传大写字母不做任何处理。同理tolower是转小写的转换函数,将参数传进去的大写写字母转小写,传小写字母不做任何处理。
现在我们可以测试看看:

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%c\n", tolower('A'));
	printf("%c\n", toupper('a'));
	return 0;
}

运行结果:
在这里插入图片描述
tolower它会返回对应的小写a的ASCII码值,但是我们是以%c的形式打印,所以结果是字符。toupper的原理也是一样这里我不再一 一解释。有了这个函数,刚才我们写小写转大写的代码可以重新写一下。此时,我们不知道a和A的差值,也可以进行转换。

#include<stdio.h>
#include<ctype.h>
int main()
{
	char arr[30] = "hi,I am a student.";
	int i = 0;
	while (arr[i])
	{
		if (islower(arr[i]))
		{
			arr[i] = toupper(arr[i]);
		}
		i++;
	}
	printf("%s\n", arr);
	return 0;
}

运行结果:
在这里插入图片描述
此时,我们就学会了字符分类函数和字符串函数的相关知识!😆大家如果感兴趣,请一键三连!😘如果存在问题,各位大佬请在评论区斧正!🥰十分感谢大家的支持!
在这里插入图片描述


http://www.kler.cn/a/303382.html

相关文章:

  • 自由学习记录(21)
  • 手动实现promise的all,race,finally方法
  • Elasticsearch基本概念及使用
  • WEB攻防-通用漏洞SQL注入sqlmapOracleMongodbDB2等
  • Ruby编程语言全景解析:从基础到进阶
  • Qt 和 WPF(Windows Presentation Foundation)
  • 【PostgreSQL数据库表膨胀的一些原因】
  • springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
  • 2024121读书笔记|《不急:我们慢慢慢慢来》——做人呢,最重要的是开心
  • 从底层原理上理解ClickHouse 中的 Distributed 引擎
  • tomcat项目报错org.apache.jasper.JasperException: java.lang.NullPointerException
  • Python中的“异常”之旅:探索异常处理的艺术
  • 大语言模型之ICL(上下文学习) - In-Context Learning Creates Task Vectors
  • 用于安全研究的 Elastic Container Project
  • Java 行为型设计模式一口气讲完!*^____^*
  • Spring Cloud 搭建 Gateway 网关与统一登录模块:路径重写、登录拦截、跨域配置
  • 使用Jenkins扩展钉钉消息通知
  • 根据NVeloDocx Word模板引擎生成Word(五)
  • 9.12 TFTP通信
  • 阿里巴巴拍立淘API:实时图像搜索与快速响应的技术探索
  • Pycharm Remote Development 报错解决
  • 【机器学习(三)】分类和回归任务-随机森林-Sentosa_DSML社区版
  • 【数据库】死锁排查方式
  • iPhone 16分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max
  • CTF比赛中的Git相关题目解题思路
  • Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理