#include <ctype.h>
iscntrl() 用来判断字符是否为ASCII码的控制字符,其原型为:
int iscntrl(int c);
【参数】c 为需要判断的字符。
【返回值】若参数c 为ASCII 控制码,则返回非 0 值,否则返回 0。
控制字符的ASCII码值 0x00 ~ 0x1F,再加上 0x7f(DEL),控制字符在屏幕上显示时不占位(看不见);显示时占位(能看见)的字符叫打印字符,可以用 isprint() 来检测。
注意,iscntrl() 为宏定义,非真正函数。
【实例】输出一个字符串,遇到控制字符就结束。
#include <stdio.h>
#include <ctype.h>
int main ()
{
int i=0;
char str[]="first line \n second line \n";
while (!iscntrl(str[i]))
{
putchar (str[i]);
i++;
}
return 0;
}
输出结果:first line
因为控制字符不可见,我们可以使用ASCII码值初始化一个数组,并判断是否是控制字符。代码如下:
#include<ctype.h>
int main(void)
{
char ch[] = {0x00,0x01,0x1f,0x7f};
int i = 0;
for(i = 0;i<4;i++)
{
if(iscntrl(ch[i]))
{
printf("%x 是控制字符\n",ch[i]);
}
else
{
printf("%x 不是控制字符\n",ch[i]);
}
}
return 0;
}
运行结果: