1、tolower&&toupper
将大写字母转换为小写字母&&将小写字母转换为大写字母
#include<stdio.h>
#include<cctype>//或者#include<ctype.h>
int main()
{
char str[]="the People's Republic of China\n";
int i;
for(i=0;str[i]!='\0';i++)
{
putchar(tolower(str[i]));//大写转小写
}
for(i=0;str[i]!='\0';i++)
{
putchar(toupper(str[i]));//小写转大写
}
return 0;
}
值得注意的是:要遍历字符串,一个一个字符转换;不能直接代入整个字符串。
2、isalpha
判断是否为字母
#include<stdio.h>
#include<cctype>//或者#include<ctype.h>
int main()
{
int c;
c='x';
printf("%c:%s\n",c,isalpha(c)?"是英文字母":"不是英文字母");
//原型是 %c:%s;%c指c的值,%s指输出 是英文字母 或 不是英文字母 作为一串字符 ;?:用来判断,就像max=a>b?a,b的原理;
//若c为字母,则isalpha(c)为真,输出前者;若c不为字母,则为假,输出后者;
c='6';
printf("%c:%s\n",c,isalpha(c)?"是英文字母":"不是英文字母");
c='&';
printf("%c:%s\n",c,isalpha(c)?"是英文字母":"不是英文字母");
return 0;
}
3、isascii
判断ascii是否位于0-127之间,判断是否为ascii码
#include<stdio.h>
#include<cctype>//或者#include<ctype.h>
int main()
{
int i,n;
char str[]={'B','3','a','y' };
n=sizeof(str)/sizeof(char);//只能用于数组类型,计算字符串长度,不能用于指针
//若str为指针,则sizeof(str)返回的是指针本身的大小,一定大于等于字符串的大小
for(i=0;i<n;i++)
{
printf("%c%s是一个scaii字符\n",str[i],(isascii(str[i]))?"":"不");
}
return 0;
}
引:如何求指针型字符串的长度大小:
没有什么好方法,遍历找每个字符,直到遇到'\0'时结束
4、 iscntrl 代码未完成
判断是否为控制字符(控制字符sacll码是0-31,和0x7f)
#include<stdio.h>
#include<cctype>//或者#include<ctype.h>
int main()
{
int c;
c='c';
printf("%c:%s是控制字符\n",c,iscntrl(c)?"":"不");
c=13;
printf("sacll码为%c的字符%s是控制字符\n",c,iscntrl(c)?"":"不");
c=0x7f;
printf("sacll码为%c的字符%s是控制字符\n",c,iscntrl(c)?"":"不");
return 0;
}
释:
控制字符(不可打印字符:是指在计算机中用于控制外围设备或者显示器的字符,例如换行符、回车符等。
非控制字符(可打印字符:则是指可以直接显示在屏幕上的字符,例如字母、数字、标点符号等。
5、isxdigit
判断是否为十六进制的数字
#include<stdio.h>
#include<string.h>
#include<cctype>//或者#include<ctype.h>
int main()
{
char str[3][10]={"2EFH3","37DA","ZE3C"};
int i,j,l;
for(i=0;i<3;i++)
{
l=strlen(str[i]);
for(j=0;str[i][j]!='\0';)
{
if(isxdigit(str[i][j]))
{
j++;
}
else
break;
}
if(j>=l)
printf("%s是十六进制的字符串\n",str[i]);
else
printf("%s不是十六进制的字符串\n",str[i]);
}
return 0;
}
十六进制的有:0~9,a~f,A~F
6、