字符分类函数
C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。这些函数的使用都需要包含一个头文件是ctype.h
具体用法在Cplusplus中有介绍
链接: https://legacy.cplusplus.com/reference/cctype/
函数 | 参数符合下列条件返回真 |
---|---|
isalnum | 字母或数字,a ~ z,A~Z,0 ~ 9 |
isalpha | 字母a ~ z或A~Z |
iscntrl | 任何控制字符 |
isdigit | 十进制数字0 ~ 9 |
isgraph | 任何图形字符 |
islower | 小写字母a ~ z |
isprint | 任何可打印字符,包括图形字符和空白字符。 |
ispunct | 标点符号,任何不属于数字或字母的图形字符 |
isspace | 空白字符:空格‘ ’,换页‘ \f ’,换行‘ \n ’,回车‘ \r ’,制表符‘ \t ’,或者垂直制表符‘ \v ’ |
isupper | 大写字母A~Z |
isxdigit | 十六进制数字,包括所有十进制数字,小写字母a ~ f,大写字符A~F。 |
这些函数的使用方法非常类似,例如:int islower ( int c );
islower
是能够判断参数部分的c是否是小写字母的。
通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0。
代码演示:字符串中的小写字母转大写,其他字符不变。
不适用这个字符转换大小写是这样的:
int main()
{
char a = 0;
scanf("%c", &a);
printf("%c\n", a);
if (a >= 65 && a <= 90)
a += 32;
else if (a >= 97 && a <= 122)
{
a -= 32;
}
printf("%c\n", a);
return 0;
}
使用库函数转换就是这样的
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "Test String.\n";
char c;
while (str[i])
{
c = str[i];
if (islower(c))
c -= 32;
putchar(c);
i++;
}
return 0;
}
字符转换函数
函数 | 功能 |
---|---|
int tolower ( int c ) | 将参数传进去的小写字母转大写 |
int toupper ( int c ) | 将参数传进去的大写字母转小写 |
上面的代码,我们将小写转大写,是-32完成的效果,有了转换函数,就可以直接使用tolower函数。
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "Test String.\n";
char c;
while (str[i])
{
c = str[i];
if (islower(c))
c = toupper(c);
putchar(c);
i++;
}
return 0;
}