字符分类函数和字符串函数
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;
}
运行结果:
此时,我们就学会了字符分类函数和字符串函数的相关知识!😆大家如果感兴趣,请一键三连!😘如果存在问题,各位大佬请在评论区斧正!🥰十分感谢大家的支持!