#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;
- }
运行结果: