2016年的第一天祝大家元旦快乐!由于今天有考试,昨天晚上写的匆忙,只是简简单单地写出了C语言中字符测试函数,却没有详细讲解其使用。接下来让我们切身感受一下它的存在。首先我需要补充的一点是这些函数的本质是宏定义,并不是一种方法。至于宏定义的概念,大概就是说在程序进行预编译的时候,进行代码的加载、替换,并不占用内存空间。假设我们用define定义了一个Man 代表 “ghn” ,则我们进行预编译的时候所有的Man都将被“ghn”原封不动的替换。同样如果Man代指一段代码,也是同样的效果。
直接上代码吧,需要的头文件为
(1)判断是否为十六进制
char a[] = "0149ACEFGH" ;
for(int i=0 ; i < strlen(a) ; i++)
{
if( isxdigit(a[i]) )
printf("a[%d] -> %c 是十六进制\n",i,a[i]);
else
printf("a[%d] -> %c 不是十六进制\n",i,a[i]);
}
(2)判断是否是数字
char b[] = "012adSD" ;
for(int i=0 ; i < strlen(b) ; i++)
{
if( isdigit(b[i]) )
printf("c[%d] -> %c 是数字\n",i,b[i]);
else
printf("c[%d] -> %c 不是数字\n",i,b[i]);
}
(3)判断是否为大写
char c[] = "asdGHG012" ;
for(int i=0 ; i < strlen(c) ; i++)
{
if( isupper(c[i]) )
printf("c[%d] -> %c 是大写\n",i,c[i]);
else
printf("c[%d] -> %c 不是大写\n",i,c[i]);
}
(4)判断是否为小写
for(int i=0 ; i < strlen(c) ; i++)
{
if( islower(c[i]) )
printf("c[%d] -> %c 是小写\n",i,c[i]);
else
printf("c[%d] -> %c 不是小写\n",i,c[i]);
}
(5)判断是否为英文
char h[] = "01 A &i$et@" ;
for(int i=0 ; i < strlen(h) ; i++)
{
if( isalpha(f[i]) )
printf("h[%d] -> %c 是英文字符\n",i,h[i]);
else
printf("h[%d] -> %c 不是英文字符\n",i,h[i]);
}
(6)判断是否为英文或数字
char d[] = "0149AaGe@!* &/t" ;
for(int i=0 ; i < strlen(d) ; i++)
{
if( isalnum(d[i]) )
printf("d[%d] -> %c 是英文字母或者数字\n",i,d[i]);
else
printf("d[%d] -> %c 不是英文字母且数字\n",i,d[i]);
}
(7)判断是否为ascii码
for(int i=120 ; i < 130 ; i++)
{
if( isascii(c[i]) )
printf("%d 所对应的字符 %c ,是 ascii \n",i,i);
else
printf("%d 所对应的字符,不是 ascii \n",i);
}
(8)判断是否为特殊字符或者标点符号
char g[] = "Hello , World!!!@@!*&" ;
for(int i=0 ; i < strlen(g) ; i++)
{
if( ispunct(g[i]) )
printf("g[%d] -> %c 是特殊符号或者标点符号\n",i,g[i]);
else
printf("g[%d] -> %c 不是特殊符号和标点符号\n",i,g[i]);
}
(9)判断是否为可打印字符
for(int i=0 ; i < 50 ; i++)
{
if( isprint(c[i]) )
printf("%d 所对应的字符 -> %c 是可打印字符\n",i,i);
else
printf("%d 所对应的字符,不是可打印字符\n",i);
}
(10)判读是否为控制字符
for(int i=0 ; i < 50 ; i++)
{
if( iscntrl(c[i]) )
printf("%d 所对应的字符,是控制字符\n",i);
else
printf("%d 所对应的字符,不是控制字符\n",i);
}
(11)判断是否为空格以外的可打印字符
char f[] = "01 A &i$et@" ;
for(int i=0 ; i < strlen(f) ; i++)
{
if( isgraph(f[i]) )
printf("f[%d] -> %c 是除了空格以外的可打印字符\n",i,f[i]);
else
printf("f[%d] -> %c 不是除了空格以外的可打印字符\n",i,f[i]);
}
(12)判断是否为空格
char e[] = "0 1 A e t" ;
for(int i=0 ; i < strlen(e) ; i++)
{
if( isspace(e[i]) )
printf("e[%d] -> %c 是空格\n",i,e[i]);
else
printf("e[%d] -> %c 不是空格\n",i,e[i]);
}