一、字符串的分类
<ctype.h>是专⻔做字符分类的,就是专门去区分各个字符是什么类型(即检查ASCII码)的一个库函数。
函数介绍:
iscntrl
函数的声明: int iscntrl (int c); (其中,C 是要检查的字符)
作用:根据标准 ASCII 字符集,控制字符的 ASCII 编码介于 0x00 (NUL) 和 0x1f (US) 之间,以及 0x7f (DEL)。如果判断的字符 C 的ASCII编码处于控制字符之内,则函数返回一个非0值,反之返回0。
简单说明:判断字符 C 是否为控制字符( 即字符C 的 ASCII值在 0 ~ 31)。
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
printf("请输入一个字符: ");
scanf("%c", &ch);
if (iscntrl(ch)) {
printf("'%c' 是一个控制字符。\n", ch);
} else {
printf("'%c' 不是一个控制字符。\n", ch);
}
return 0;
}
输出结果:
<此处输入的字符为<ALT>按键,在输入中不显示字符,但计算机会自行判断。>
isspace
函数的声明: int isspace (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是空白字符, 如果是,则函数返回一个非0值,反之返回0。
简单说明:判断字符 C 是否为空白字符。
标准的空白字符包括 :
' ' (0x20) space (SPC) 空格符
'\t' (0x09) horizontal tab (TAB) 水平制表符
'\n' (0x0a) newline (LF) 换行符
'\v' (0x0b) vertical tab (VT) 垂直制表符
'\f' (0x0c) feed (FF) 换页符
'\r' (0x0d) carriage return (CR) 回车符
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
printf("请输入一个字符: ");
scanf(" %c", &ch); // 注意前面的空格,它会跳过任何空白字符直到读取到非空白字符
if (isspace(ch)) {
printf("'%c' 是一个空白字符。\n", ch);
} else {
printf("'%c' 不是一个空白字符。\n", ch);
}
return 0;
}
运行结果:
isdigit
函数的声明:int isdigit (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是十进制数字字符。如果 c 是一个数字,则该函数返回非零值,否则返回 0。
简单说明:判断字符 C 是否为十进制数字字符。<即‘0’~‘9’之间的十进制数字>
#include <stdio.h>
#include <ctype.h>
int main() {
char ch = '7'; // 可以根据需求修改测试字符
if (isdigit(ch)) {
printf("%c 是一个数字\n", ch);
} else {
printf("%c 不是一个数字\n", ch);
}
return 0;
}
运行结果:
7 是一个数字
islower
函数的声明:int islower (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是小写字母 ’ a ’ ~ ' z ' 。如果 c 的ASCII码处于 ‘ a ’ ~ ' z ' 之间,则该函数返回非零值,否则返回 0。
简单说明:判断字符 C 是否为小写字母 a ’ ~ ' z ' 。
代码:
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
if (islower(ch)) {
printf("%c 是小写字母\n", ch);
} else {
printf("%c 不是小写字母\n", ch);
}
return 0;
}
运行结果
请输入一个字符:
a
a 是小写字母
isupper
函数的声明:int isupper (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否为字母 A ’ ~ ' Z ' 。如果 c 的ASCII码处于 ‘ A ’ ~ ' Z ' 之间,则该函数返回非零值,否则返回 0。
简单说明:判断字符 C 是否为字母 ' A ’ ~ ' Z ' 。
代码展示:
#include <stdio.h>
#include <ctype.h>
int main() {
char ch = 'A';
if (isupper(ch)) {
printf("%c 是大写字母\n", ch);
} else {
printf("%c 不是大写字母\n", ch);
}
return 0;
}
运行结果
A 是大写字母
isalpha
函数的声明:int isalpha (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是大写字母 A ’ ~ ' Z ' 或者’ a ’ ~ ' z '。如果 c 的ASCII码处于 ‘ A ’ ~ ' Z ' 或’ a ’ ~ ' z '之间,则该函数返回非零值,否则返回 0。
简单说明:判断字符 C 是否为字母 ' A ’ ~ ' Z ' 或 ’ a ’ ~ ' z '。
代码展示:
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
printf("请输入一个字符: ");
scanf("%c", &ch);
if (isalpha(ch)) {
printf("%c 是一个字母\n", ch);
} else {
printf("%c 不是一个字母\n", ch);
}
return 0;
}
运行结果
请输入一个字符:
a
a 是一个字母
isalnum
函数的声明:int isalnum (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是字母或者数字 ‘ A ’ ~ ' Z ' 或者’ a ’ ~ ' z ' 或者 ’ 0 ’ ~ ' 9 '。如果 c 的ASCII码处于‘ A ’ ~ ' Z ' 或者’ a ’ ~ ' z ' 或者 ’ 0 ’ ~ ' 9 '之间,则该函数返回非零值,否则返回 0。
简单说明:判断字符 C 是否为字母或者数字 ‘ A ’ ~ ' Z ' 或者’ a ’ ~ ' z ' 或者 ’ 0 ’ ~ ' 9 ''。
代码演示:
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
if (isalnum(ch)) {
printf("%c是字母或数字\n", ch);
} else {
printf("%c不是字母或数字\n", ch);
}
return 0;
}
运行结果:
请输入一个字符:
a
a 是一个字母或数字
ispunct
函数的声明:int ispunct (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是标点符号字符。如果 c 是一个标点符号字符,则该函数返回非零值(true),否则返回 0(false)。
简单说明:检查字符C是否是标点符号字符。
代码:
#include <stdio.h>
#include <ctype.h>
int main()
{
int a = 't';
int b = '1';
int c = '/';
int d = ' ';
if( ispunct(a) )
{
printf("a = %c 是标点符号字符\n", a );
}
else
{
printf("a = %c 不是标点符号字符\n", a );
}
if( ispunct(b) )
{
printf("b = %c 是标点符号字符\n", b );
}
else
{
printf("b = %c 不是标点符号字符\n", b );
}
if( ispunct(c) )
{
printf("c = %c 是标点符号字符\n", c );
}
else
{
printf("c = %c 不是标点符号字符\n", c );
}
if( ispunct(d) )
{
printf("d = %c 是标点符号字符\n", d );
}
else
{
printf("d = %c 不是标点符号字符\n", d );
}
return(0);
}
运行结果
a = t 不是标点符号字符
b = 1 不是标点符号字符
c = / 是标点符号字符
d = 不是标点符号字符
isgraph
函数的声明:int isgraph (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是图形表示法<带有图形表示法的字符是除了空白字符(比如 ' ')以外的所有可打印的字符。>。如果 c 是图形表示法,则该函数返回非零值,否则返回 0。
简单说明:判断字符 C 是否是图形表示法。
代码:
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
if (isgraph(ch)) {
printf("输入的字符是图形表示法。\n");
} else {
printf("输入的字符不是图形表示法。\n");
}
return 0;
}
执行结果:
请输入一个字符:
a
输入的字符是图形表示法。
isprint
函数的声明:int isprint (int c); (其中,C 是要检查的字符)
作用:检查所传的字符是否是可打印字符<可打印字符是非控制字符的字符>。如果 c 是可打印字符,则该函数返回非零值,否则返回 0。
简单说明:判断字符 C 是否可以打印。
#include <stdio.h>
#include <ctype.h>
int main() {
char ch = 'A';
if (my_isprint(ch)) {
printf("%c 是可打印字符.\n", ch);
} else {
printf("%c 不是可打印字符.\n", ch);
}
return 0;
}
执行结果:
A 是可打印字符
字符转换函数
tolower
函数的声明:int tolower (int c); 将参数传进去的⼤写字⺟转⼩写
作用:检查所传的字符是否是大写字母 A ’ ~ ' Z ' 。如果 c 的ASCII码处于 ‘ A ’ ~ ' Z ' ,则将其转换为对应的小写字母’ a ’ ~ ' z '之间,否则不做处理。
toupper
函数的声明:int toupper (int c); 将参数传进去的⼩写字⺟转⼤写
作用:检查所传的字符是否是小写字母’ a ’ ~ ' z ' 。如果 c 的ASCII码处于 ’ a ’ ~ ' z ' ,则将其转换为对应的大写字母‘ A ’ ~ ' Z '之间,否则不做处理。
尾言:
后面会为大家介绍string库中各类函数的用法。再往后我会给大家去讲解本篇所有函数以及string中所有函数的实现,请敬请期待~