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

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

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;
}

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

评论 138
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值