写这篇文章的起因是在练习算法的过程中遇到了isalnum()函数,而自己又对此很陌生。查资料的时候又发现此函数涉及到c的一个标准库,干脆直接对库进行一个总结。以下正文为总结内容。
目录
一、简介
二、库函数
1、isalnum()函数
2、isalpha()函数
3、isdigit()函数
4、islower()函数
5、isupper()函数
6、iscntrl()函数
7、isgraph()函数
8、isprint()函数
9、ispunct()函数
10、isspace()函数
11、issdigit()函数
12、tolower()函数
13、toupper()函数
一、简介
ctype.h 头文件提供了一些函数,可用于测试和映射字符。
这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符。
如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。
注意:
- ctype.h 中的函数和宏定义的参数都是 int 类型,但它们实际上应该是用来表示字符的整数值。这是因为 char 类型会自动被提升为 int 类型进行处理。
- 虽然 int 类型参数可以接受范围从 -128 ~ 127 的值,但 ctype.h 中的函数和宏定义预期的参数范围只是 unsigned char 和 EOF 的值,这是保证了正确处理各种字符的关键。
- ctype.h 中的函数和宏定义预期的字符是基于 ASCII 字符集的,即字符的编码在 0 ~ 127 的范围内。对于其它字符集或扩展字符集,ctype.h 中的函数和宏定义的行为可能会有问题。
二、库函数
以下为该<ctype.h>包含的字符测试函数
函数原型 | 功能 |
int isalnum(int c) |
判断字符是否是字母和数字。 |
int isalpha(int c) |
判断字符是否是字母。 |
int isdigit(int c) |
判断字符是否是十进制数字。 |
int islower(int c) |
判断字符是否是小写字母。 |
int isupper(int c) |
判断字符是否是大写字母。 |
int iscntrl(int c) |
判断字符是否是控制字符。 |
int isgraph(int c) |
判断字符是否有图形表示法。 |
int isprint(int c) |
判断字符是否是可打印的。 |
int ispunct(int c) |
判断字符是否是标点符号字符。 |
int isspace(int c) |
判断字符是否是空白字符。 |
int isxdigit(int c) |
判断字符是否是十六进制数字。 |
1、isalnum()函数
检查所传的字符是否是字母或数字。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = 'g', b = '3', c = 'T', d = '?';
printf("传入字符 '%c' ,返回值:%d\n", a, isalnum(a));
printf("传入字符 '%c' ,返回值:%d\n", b, isalnum(b));
printf("传入字符 '%c' ,返回值:%d\n", c, isalnum(c));
printf("传入字符 '%c' ,返回值:%d\n", d, isalnum(d));
return 0;
}
运行结果:
2、isalpha()函数
检查所传的字符是否是字母。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = 'a', b = '5', c = ' ';
printf("传入字符 '%c' ,返回值:%d\n", a, isalpha(a));
printf("传入字符 '%c' ,返回值:%d\n", b, isalpha(b));
printf("传入字符 '%c' ,返回值:%d\n", c, isalpha(c));
return 0;
}
运行结果:
3、isdigit()函数
检查所传的字符是否是数字( 0 ~ 9 )。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = 'b', b = '3', c = '\t', d = '[';
printf("传入字符 '%c' ,返回值:%d\n", a, isdigit(a));
printf("传入字符 '%c' ,返回值:%d\n", b, isdigit(b));
printf("传入字符 '%c' ,返回值:%d\n", c, isdigit(c));
printf("传入字符 '%c' ,返回值:%d\n", d, isdigit(d));
return 0;
}
运行结果:
4、islower()函数
检查所传的字符是否是小写字母( a ~ z )。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = 'a', b = '2', c = 'A', d = '>';
printf("传入字符 '%c' ,返回值:%d\n", a, islower(a));
printf("传入字符 '%c' ,返回值:%d\n", b, islower(b));
printf("传入字符 '%c' ,返回值:%d\n", c, islower(c));
printf("传入字符 '%c' ,返回值:%d\n", d, islower(d));
return 0;
}
运行结果:
5、isupper()函数
检查所传的字符是否是大写字母(A ~ Z)。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = 'a', b = '2', c = 'A', d = '>';
printf("传入字符 '%c' ,返回值:%d\n", a, isupper(a));
printf("传入字符 '%c' ,返回值:%d\n", b, isupper(b));
printf("传入字符 '%c' ,返回值:%d\n", c, isupper(c));
printf("传入字符 '%c' ,返回值:%d\n", d, isupper(d));
return 0;
}
运行结果:
6、iscntrl()函数
检查所传的字符是否是控制字符(ASCII码值为 0~31 和 127(DEL))
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = ' ', b = '2', c = '\t', d = '\a';
printf("传入字符 '%c' ,返回值:%d\n", a, iscntrl(a));
printf("传入字符 '%c' ,返回值:%d\n", b, iscntrl(b));
printf("传入字符 '%c' ,返回值:%d\n", c, iscntrl(c));
printf("传入字符 '%c' ,返回值:%d\n", d, iscntrl(d));
return 0;
}
运行结果:
7、isgraph()函数
检查所传的字符是否有图形表示法(一个字符在计算机显示器或其他设备上是否有对应的可见图形呈现出来)。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = ' ', b = '2', c = '\t', d = '\a';
printf("传入字符 '%c' ,返回值:%d\n", a, isgraph(a));
printf("传入字符 '%c' ,返回值:%d\n", b, isgraph(b));
printf("传入字符 '%c' ,返回值:%d\n", c, isgraph(c));
printf("传入字符 '%c' ,返回值:%d\n", d, isgraph(d));
return 0;
}
运行结果:
8、isprint()函数
检查所传的字符是否是可打印的。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = ' ', b = '2', c = '\t', d = '\a', e = '!';
printf("传入字符 '%c' ,返回值:%d\n", a, isprint(a));
printf("传入字符 '%c' ,返回值:%d\n", b, isprint(b));
printf("传入字符 '%c' ,返回值:%d\n", c, isprint(c));
printf("传入字符 '%c' ,返回值:%d\n", d, isprint(d));
printf("传入字符 '%c' ,返回值:%d\n", e, isprint(e));
return 0;
}
运行结果:
9、ispunct()函数
检查所传的字符是否是标点符号字符。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = ' ', b = '*', c = '\t', d = 'a', e = '!';
printf("传入字符 '%c' ,返回值:%d\n", a, ispunct(a));
printf("传入字符 '%c' ,返回值:%d\n", b, ispunct(b));
printf("传入字符 '%c' ,返回值:%d\n", c, ispunct(c));
printf("传入字符 '%c' ,返回值:%d\n", d, ispunct(d));
printf("传入字符 '%c' ,返回值:%d\n", e, ispunct(e));
return 0;
}
运行结果:
10、isspace()函数
检查所传的字符是否是空白字符(指在屏幕上不显示字符形状的 ASCII 控制字符,包括空格字符(Space)、制表符(Tab)、换行符(Line Feed)、回车符(Carriage Return)和垂直制表符(Vertical Tab)。这些字符用于格式化文本,设置间距,调整光标位置等)。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = ' ', b = '\n', c = '\t', d = '\r', e = '\v';
printf("传入字符 '%c' ,返回值:%d\n", a, isspace(a));//空格
printf("传入字符 '%c' ,返回值:%d\n", b, isspace(b));//换行
printf("传入字符 '%c' ,返回值:%d\n", c, isspace(c));//制表符
printf("传入字符 '%c' ,返回值:%d\n", d, isspace(d));//回车
printf("传入字符 '%c' ,返回值:%d\n", e, isspace(e));//垂直制表符
return 0;
}
运行结果:
11、issdigit()函数
检查所传的字符是否是十六进制数字(0 ~ 9、a ~ f、A ~ F)。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a = '@', b = 'h', c = '5', d = 'c';
printf("传入字符 '%c' ,返回值:%d\n", a, isxdigit(a));
printf("传入字符 '%c' ,返回值:%d\n", b, isxdigit(b));
printf("传入字符 '%c' ,返回值:%d\n", c, isxdigit(c));
printf("传入字符 '%c' ,返回值:%d\n", d, isxdigit(d));
return 0;
}
运行结果:
<ctype.h>标准库还包含了两个字符映射函数(不改变原始参数值)
函数原型 | 功能 |
int tolower(int c) | 参数为大写字母返回小写字母,否则返回原参数 |
int toupper(int c) | 参数为小写字母返回大写字母,否则返回原参数 |
12、tolower()函数
把大写字母转换为小写字母。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[] = {"Get SOO@! 2024"};
int i = 0;
while(str[i] != 0)
{
putchar(tolower(str[i++]));
}
return 0;
}
运行结果:
13、toupper()函数
把小写字母转换为大写字母。
示例:
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[] = {"Get SOO@! 2024"};
int i = 0;
while(str[i] != 0)
{
putchar(toupper(str[i++]));
}
return 0;
}
运行结果:文章来源:https://www.toymoban.com/news/detail-770132.html
文章来源地址https://www.toymoban.com/news/detail-770132.html
到了这里,关于c语言学习之——<ctype.h>库的介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!