还在担心关于字符的库函数记不住吗?不用担心,这篇文章将为你全面整理所有的字符函数的用法。不用记忆,一次看完,随查随用。用多了自然就记住了
字符分类函数和字符转换函数
C语言中有一系列的函数是专门做字符分类和字符转换的,也就是一个字符是属于什么类型的字符的,以及将字符转换为大写或小写,这些函数的使用都需要包含⼀个头头件是
字符分类函数:
函数 | 函数判断为真返回非0值,否则返回0 |
检查字符是否为字母或者数字 (如:'a'~'z','A'~'Z','0'~'9') | |
检查字符是否为字母(如:'a'~'z','A'~'Z') | |
isblank | 检查字符是否为空格字符 ' ' 和水平制表符 '\t '这两种 |
检查字符是否为控制字符,指那些通常用于控制设备,不显示在屏幕上的字符 (如:ASCII码值在0x00~0x1F之间的字符,以及0x7F位置处的字符) | |
检查字符是否为十进制数字(如:'0'~'9') | |
检查字符是否具有图形表示(指的是所有可以打印出来的字符, 也就是非空白字符和其他不可打印字符) | |
检查字符是否为小写字母 | |
检查字符是否可打印 (ASCII范围通常为 (空格)32~126(~) 之间) | |
检查字符是否为标点符号字符 | |
isspace | 检查字符是否为空白字符 (如: 空格' ',换页'\f',换行'\n',回车'\r',水平制表符'\t',垂直制表符'\v') |
isupper | 检查字符是否为大写字母 (如:'A'~'Z) |
检查字符是否为十六进制数字 (如:'A'~'F') |
以上函数共性:
字符转换函数
例如 tolower 函数
接下来我将演示这些函数的用法:
- #include
- #include
-
- //检查字符是否为字母或者数字
- //(如:'a'~'z','A'~'Z','0'~'9')
- int main()
- {
- if (isalnum('a'))
- printf("是小写字母\n");
-
- if (isalnum('8'))
- printf("是数字\n");
-
- if (isalnum('Z'))
- printf("是大写字母\n");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为字母(如:'a'~'z','A'~'Z')
- int main()
- {
- if (isalpha('a'))
- printf("是字母\n");
-
- if (isalpha('B'))
- printf("是字母\n");
-
- if (isalpha('2') == 0)
- printf("不是字母\n");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为,空格字符 ' ' 和水平制表符 '\t '这两种
- int main()
- {
- if (isblank(' '))
- printf("空格字符\n");
- if (isblank('\t'))
- printf("水平制表符\n");
- if (isblank('\n') == 0)
- printf("不认识\n");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- int main()
- {
- //判断字符是否为ASCII码值在0x00~0x1F之间,以及0x7F位置处的控制类字符
- //例子较多,只示例3个
- if (iscntrl('\n'))
- printf("true\n");
- if (iscntrl('\r'))
- printf("true\n");
- if (iscntrl(0x1F))
- printf("true\n");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为十进制数字(如:'0'~'9')
- int main()
- {
- if (isdigit('1'))
- printf("true\n");
- if (isdigit('9'))
- printf("true\n");
- if (isdigit(2) == 0)
- printf("false\n");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否具有图形表示(指的是所有可以打印出来的字符,
- //也就是非空白字符和其他不可打印字符)
- int main()
- {
- int i = 0;
-
- //循环判断所有字符
- for (i = 0x0; i <= 0x7F; i++)
- {
- if (isgraph('i'))
- printf("%c ", i);
- }
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为小写字母
- int main()
- {
- int i = 0;
-
- for (i = 'a'; i <= 'z'; i++)
- {
- if (islower(i))
- {
- printf("%c ", i);
- }
- }
-
- if (islower('A') == 0)
- printf("\nFalse");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为可打印字符
- int main()
- {
- char c = 0;
-
- for (c = 32; c <= 126; c++)
- {
- if (isprint(c))
- {
- printf("%c ", c);
- }
- }
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为标点符号字符
- int main()
- {
- if (ispunct(','))
- printf("true\n");
- if (ispunct('.'))
- printf("true\n");
- if (ispunct('?'))
- printf("true\n");
- if (ispunct('a') == 0)
- printf("false\n");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为空白字符
- //(如: 空格' ',换页'\f',换行'\n',回车'\r',水平制表符'\t',垂直制表符'\v')
- int main()
- {
- if (isspace(' '))
- printf("true\n");
- if (isspace('\n'))
- printf("true\n");
- if (isspace('\t'))
- printf("true\n");
- if (isspace('\v'))
- printf("true\n");
- if (isspace('\f'))
- printf("true\n");
- if (isspace('\r'))
- printf("true\n");
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为大写字母
- int main()
- {
- int i = 0;
-
- for (i = 'A'; i <= 'Z'; i++)
- {
- if (isupper(i))
- {
- printf("%c ", i);
- }
- }
-
- return 0;
- }
运行结果:
- #include
- #include
-
- //检查字符是否为16进制数字
- int main()
- {
- if (isxdigit('A'))
- printf("true\n");
- if (isxdigit('B'))
- printf("true\n");
- if (isxdigit('F'))
- printf("true\n");
- if (isxdigit('G') == 0)
- printf("false\n");
-
- return 0;
- }
运行结果:
13:tolower 函数
- #include
- #include
-
- //将大写字母转换为小写字母并返回
- int main()
- {
- char c = 0;
-
- for (c = 'A'; c <= 'Z'; c++)
- {
- printf("%c ", tolower(c));
- }
-
- printf("\n%c", tolower('A'));
-
- return 0;
- }
运行结果:
14:toupper 函数
- #include
- #include
-
- //将小写字母转为大写字母并返回
- int main()
- {
- char c = 0;
-
- for (c = 'a'; c <= 'z'; c++)
- {
- printf("%c ", toupper(c));
- }
-
- printf("\n%c", toupper('A'));
-
- return 0;
- }
运行结果:
一开始准备和字符串函数一起写,写到下面发现篇幅过长了,字符串函数放在下一篇来讲,最后感谢大家的支持。