- 6.5.3 字符函数库
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
- include<ctype.h>//头文件
- include<stdio.h>
- include<reg51.h>
6.5.3 字符函数库
字符函数库提供了对单个字符的判断和转换函数。字符函数库的原型声明包含在头文件CTYPE.H中,字符函数库的函数如表6.8所示。下面分别介绍一些常用的字符函数。
1.检查英文字母函数isalpha
检查英文字母函数isalpha的函数原型如下。
bit isalpha(char c);
其中,c为待判断的字符,如果是英文字母则返回1,否则返回0。检查英文字母函数isalpha用于检查形参字符是否为英文字母。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=isalpha(i);//调用isalpha函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isalpha(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isalpha函数来判断128个字符对应的是否为英文字母,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
2.检查字母数字函数isalnum
检查字母数字函数isalnum的函数原型如下。
bit isalnum(char c);
其中,c为待判断的字符,如果是英文字母或数字字符则返回1,否则返回0。检查字母数字函数isalnum用于检查形参字符是否为英文字母或数字字符。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=isalnum(i);//调用isalnum函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isalnum(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isalnum函数来判断128个字符对应的是否为英文字母或者数字,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
3.检查控制字符函数iscntrl
检查控制字符函数iscntrl的函数原型如下。
bit iscntrl(char c);
其中,c为待判断的字符。检查控制字符函数iscntrl用于检查形参字符是否为控制字符。控制字符其取值范围在0x00~0xlF或等于0x7F,如果是则返回1,否则返回0。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=iscntrl(i);//调用iscntrl函数
if(b)
p=“YES”;
else
p=“No”;
printf(“iscntrl(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用iscntrl函数来判断128个字符对应的是否为控制字符,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
4.十进制数字检查函数isdigit
十进制数字检查函数isdigit的函数原型如下。
bit isdigit(char c);
其中,c为待判断的字符。十进制数字检查函数isdigit用于检查形参字符是否为十进制数字,如果是十进制数字则返回1,否则返回0。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=isdigit(i);//调用isdigit函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isdigit(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isdigit函数来判断128个字符对应的是否为十进制数字,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
5.可打印字符检查函数isgraph
可打印字符检查函数isgraph的函数原型如下。
bit isgraph(char c);
其中,c为待判断的字符。可打印字符检查函数isgraph用于检查形参字符是否为可打印字符,可打印字符的取值范围为0x21~0x7C,不包含空格,如果是可打印字符则返回1,否则返回0。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=isgraph(i);//调用isgraph函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isgraph(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isgraph函数来判断128个字符对应的是否为可打印字符,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
6.包含空格的可打印字符检查函数isprint
包含空格的可打印字符检查函数isprint的函数原型如下。
bit isprint(char c);
其中,c为待判断字符。包含空格的可打印字符检查函数isprint用于检查形参字符是否为可打印字符以及空格,如果是则返回1,否则返回0。该函数与isgraph的区别在于包含了空格符,空格符为0x20。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=isprint(i);//调用isprint函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isprint(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isprint函数来判断128个字符对应的是否为包含空格的可打印字符,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
7.格式字符检查函数ispunct
格式字符检查函数ispunct的函数原型如下。
bit ispunct(char c);
其中,c为待判断字符。格式字符检查函数ispunct用于检查形参字符是否为标点、空格或格式字符,如果是则返回1,否则返回0。符合ispunct的字符包含!、"、#、%、&、'、(、)、*、+、-、,、.、/、\、;、:、<、=、>、?、@、[、]、~、^、_、{、}、|。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=ispunct(i);//调用ispunct函数
if(b)
p=“YES”;
else
p=“No”;
printf(“ispunct(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用ispunct函数来判断128个字符对应的是否为标点、空格或格式字符,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
8.小写英文字母检查函数islower
小写英文字母检查函数islower的函数原型如下。
bit islower(char c);
其中,c为待判断字符。小写英文字母检查函数islower用于检查形参字符是否为小写英文字母,如果是小写英文字母则返回1,否则返回0。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=islower(i);//调用islower函数
if(b)
p=“YES”;
else
p=“No”;
printf(“islower(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用islower函数来判断128个字符对应的是否为小写英文字母,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
9.大写英文字母检查函数isupper
大写英文字母检查函数isupper的函数原型如下。
bit isupper(char c);
其中,c为待判断字符。大写英文字母检查函数isupper用于检查形参字符是否为大写英文字母,如果是大写英文字母则返回1,否则返回0。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=(isupper(i);//调用isupper函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isupper(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isupper函数来判断128个字符对应的是否为大写英文字母,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
10.控制字符检查函数isspace
控制字符检查函数isspace的函数原型如下。
bit isspace(char c);
其中,c为待判断字符。控制字符检查函数isspace用于检查形参字符是否为控制字符,如果是控制字符则返回1,否则返回0。控制字符包括空格、制表符、回车、换行、垂直制表符和送纸,其取值范围为0x09~0x0d或为0x20。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
unsigned char i;//变量声明
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=isspace(i);//调用isspace函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isspace(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isspace函数来判断128个字符对应的是否为控制字符,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
11.十六进制数字检查函数isxdigit
十六进制数字检查函数isxdigit的函数原型如下。
bit isxdigit(char c);
其中,c为待判断字符。十六进制数字检查函数isxdigit用于检查形参字符是否为十六进制数字,如果是十六进制数字字符则返回1,否则返回0。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
unsigned char i;//变量声明
{
bit b;
char*p;
//初始化串口
for(i=0;i<128;i++)//循环输出
{
b=isxdigit(i);//调用isxdigit函数
if(b)
p=“YES”;
else
p=“No”;
printf(“isxdigit(%c)=%s\n”,i,p);//输出结果
}
}
该程序可以在KeilµVision3编译环境中执行。在程序中循环调用isxdigit函数来判断128个字符对应的是否为十六进制数字字符,如果是则输出Yes,否则输出No,运行的结果将通过串口输出。
12.十六进制数字转换函数toint
十六进制数字转换函数toint的函数原型如下。
char toint(char c);
其中,c为待转换字符。十六进制数字检查函数toint用于转换形参字符0~9、a~f(大小写无关)为十六进制数字。其中,对于字符0~9,返回值为0H~9H,对于ASCII字符a~f(大小写无关),返回值为0AH~0FH。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
char ch;//变量声明
unsigned long k;
//初始化串口
ch=‘7’;//字符变量赋值
k=toint(ch);//调用函数
printf(“toint(%c)=%ld\n”,ch,k);//输出结果
ch=‘d’;//字符变量赋值
k=toint(ch);//调用函数
printf(“toint(%c)=%ld\n”,ch,k);//输出结果
}
该程序可以在KeilµVision3编译环境中执行,运行的结果如下。
toint(7)=7
toint(d)=13
在该程序中,分别为字符变量ch赋值,然后调用toint函数将字符转换为十六进制数字,运行的结果将通过串口输出。
13.大写字符转换函数tolower
大写字符转换函数tolower的函数原型如下。
char tolower(char c);
其中,c为待转换的大写字符。大写字符转换函数tolower用于将大写字符转换为小写字符,如果字符参数不在A~Z之间,则该函数将不起作用,而直接返回原字符。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
char ch;//变量声明
char ch_lower;
//初始化串口
ch=‘R’;//赋大写字符
ch_lower=tolower(ch);//调用函数
printf(“tolower(%c)=%c\n”,ch,ch_lower);//输出结果
ch=‘t’;//赋小写字符
ch_lower=tolower(ch);//调用函数
printf(“tolower(%c)=%c\n”,ch,ch_lower);//输出结果
}
该程序可以在KeilµVision3编译环境中执行,运行的结果如下。
tolower(R)=r
tolower(t)=t
在该程序中,分别为字符变量ch赋值,然后调用tolower函数将大写字符转换为小写字符,运行的结果将通过串口输出。
14.小写字符转换函数toupper
小写字符转换函数toupper的函数原型如下。
char toupper(char c);
其中,c为待转换的小写字符。小写字符转换函数toupper用于将小写字符转换为大写字符,如果字符参数不在a~z之间,则该函数将不起作用,而直接返回原字符。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
char ch;//变量声明
char ch_upper;
//初始化串口
ch=‘r’;//赋小写字符
ch_upper=toupper(ch);//调用函数
printf(“toupper(%c)=%c\n”,ch,ch_upper);//输出结果
ch=‘Q’;//赋大写字符
ch_upper=toupper(ch);//调用函数
printf(“toupper(%c)=%c\n”,ch,ch_upper);//输出结果
}
该程序可以在KeilµVision3编译环境中执行,运行的结果如下。
toupper(r)=R
toupper(Q)=Q
在该程序中,分别为字符变量ch赋值,然后调用toupper函数将小写字符转换为大写字符,运行的结果将通过串口输出。
15.ASCII字符转换函数toascii
ASCII字符转换函数toascii的函数原型如下。
char toascii(char c);
其中,c为待转换的字符。ASCII字符转换函数toascii用于将任何字符型参数缩小到有效的ASCII范围之内。该函数执行的操作是将形参数值和0x7f做与运算,从而去掉第7位以上的所有位数。如果形参已是有效的ASCII字符,则不作处理,直接返回原字符。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
int ch;//变量声明
char k;
//初始化串口
ch=246;//字符变量赋值
k=toascii(ch);//调用函数
printf(“toascii(%d)=%c\n”,ch,k);//输出结果
}
该程序可以在KeilµVision3编译环境中执行,运行的结果如下。
toascii(246)=v
在该程序中,由于字符型变量可以表示为整型,因此变量ch赋值,然后调用toascii函数将其转换为有效的ASCII字符,最后使用printf函数输出转换结果。
16.大写字符宏转换函数_tolower
大写字符宏转换函数_tolower的函数原型如下。
char_tolower(char c);
其中,c为待转换的大写字符。大写字符宏转换函数_tolower用于将大写字符转换为小写字符。该函数其实是一个由宏定义完成的操作,执行的操作是将字符参数c与常数0x20逐位进行或运算,从而将大写字符转换为小写字符。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
char ch;//变量声明
char ch_lower;
//初始化串口
ch=‘A’;//字符变量赋值
ch_lower=_tolower(ch);//调用函数
printf(“_tolower(%c)=%c\n”,ch,ch_lower);//输出结果
}
该程序可以在KeilµVision3编译环境中执行,运行的结果如下。
_tolower(A)=a
在该程序中,首先为字符变量ch赋值,然后调用_tolower函数将大写字符转换为小写字符,运行的结果将通过串口输出。
17.小写字符宏转换函数_toupper
小写字符宏转换函数_toupper的函数原型如下。
char_toupper(char c);
其中,c为待转换的小写字符。小写字符宏转换函数_toupper用于将小写字符转换为大写字符。该函数其实是一个由宏定义完成的操作,其功能是将字符参数c与常数0xdf逐位进行与运算,从而将小写字符转换为大写字符。程序示例如下。
include<ctype.h>//头文件
include<stdio.h>
include<reg51.h>
void main(void)//主函数
{
char ch;//变量声明
char ch_upper;
//初始化串口
ch=‘r’;//字符变量赋值
ch_upper=_toupper(ch);//调用函数
printf(“_toupper(%c)=%c\n”,ch,ch_upper);//输出结果
}
该程序可以在KeilµVision3编译环境中执行,运行的结果如下。
_toupper(r)=R
在该程序中,首先为字符变量ch赋值,然后调用_toupper函数将小写字符转换为大写字符,运行的结果将通过串口输出。