字符分类函数与字符转化函数
前言:在c语言中有一系列的函数专门做字符分类,也就是判断一个字符是属于什么类型的,比如有数字字符124356789,大写字符ABCDE,小写字符abcde等等,这种函数的使用都需要包含一个头文件#include<ctype.h>
一:字符分类函数
1.isdigit函数
顾名思义,这个函数就是判断字符是不是数字字符,如果是的话就会返回真,我们可以写一个程序来找出一个字符数组里面的数字字符,并且将它打印出来
(1)理论分析:我们首先需要用循环来遍历这个数组的所有元素,用isdigit函数来一个一个判断是否为数字字符,如果是,那么就将它打印出来,如果不是,则跳过,让它下标+1,直至遍历完数组
(2)代码实现:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<ctype.h> int main() { char s[] = "avd2839fdf22"; int i = 0; while (s[i]) { if (isdigit(s[i])) { printf("%c ", s[i]); } i++; } return 0; }2.islower函数
这个函数是判断字符是否为小写字符的函数,如果是,那么返回值就为真,我们根据上面的isdigit函数,可以写一个只输出打印小写字母的程序,代码实现如下
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<ctype.h> int main() { char arr[] = "adffsfDFEfsfEFS"; int i = 0; while (arr[i]) { if (islower(arr[i])) { printf("%c ", arr[i]); } i++; } return 0; }3.isupper函数
这个是判断字符是否为大写字母的函数,我们根据前面的经验,可以写一个只输出打印大写字母的程序,代码实现如下
int main() { char arr[] = "adffsfDFEfsfEFS"; int i = 0; while (arr[i]) { if (isupper(arr[i])) { printf("%c ", arr[i]); } i++; } return 0; }4.大小写字母互相转换
我们可以用islower和isupper函数来互相转换大小写字母,写一个程序,将一个字符数组里面的小写字母全部转化成大写字母并将其打印
(1)理论分析:
用while循环遍历整个数组,然后用islower函数选出小写字母,我们知道,小写字母a的ASCLL码值是97,而大写字母A的ASCLL值是65,相差32,所以只需让小写字母-32,就可以得到对应的大写字符
(2)代码实现:
int main() { char str[] = "asfdSEFSsfee"; int i = 0; while (str[i]) { if (islower(str[i])) { str[i] -= 32; } i++; } printf("%s", str); return 0; }对应的,将大写字母转化成小写字母同理,代码实现如下
int main() { char str[] = "asfdSEFSsfee"; int i = 0; while (str[i]) { if (isupper(str[i])) { str[i] += 32; } i++; } printf("%s", str); return 0; }5.其他分类函数
除了上述提到的函数,还有其它的字符分类函数,它们的使用方法同上
isalpha(c)是否字母(大写 + 小写)isalnum(c)是否字母或数字isspace(c)是否空白字符 (空格、\t、\n、\r 等)ispunct(c)是否标点符号isprint(c)是否可打印字符iscntrl(c)是否控制字符
二:字符转换函数
1.tolower函数
上述我们将大小写转换,是+-32的效果,有了转换函数,就可以直接用tolower函数
int main() { char s[] = "sdfsefeFESDfesf"; int i = 0; while (s[i]) { if (islower(s[i])) { s[i] = toupper(s[i]); } i++; } printf("%s", s); return 0; }2.toupper函数
将小写直接转换为大小,也可以直接用toupper函数,原理同上,代码实现如下
int main() { char s[] = "sdfsefeFESDfesf"; int i = 0; while (s[i]) { if (isupper(s[i])) { s[i] = tolower(s[i]); } i++; } printf("%s", s); return 0; }