#ifndef _CTYPE_H
#define _CTYPE_H
/*对应与ascii码表*/
#define _U 0x01 /*大写字母*/
#define _L 0x02 /*小写字幕*/
#define _D 0x04 /*数字[0-9]*/
#define _C 0x08 /*控制字符*/
#define _P 0x10 /*标点符号*/
#define _S 0x20 /*空白字符*/
#define _X 0x40 /*16进制数字*/
#define _SP 0x80 /*用于空格字符*/
extern unsigned char _ctype[]; /*字符特性数组*/
extern char _ctmp; /*临时变量*/
/*确定字符特性的宏定义*/
#define isalnum(c) ((_ctype+1)[c] & (_U|_L|_D)) /**/
/*是字符或数字[A-Z][a-z][0-9]*/
#define isalpha(c) ((_ctype+1)[c] & (|U|_L)) /*字符*/
#define iscntrl(c) ((_ctype+1)[c] & (_C)) /*控制字符*/
#define isdigit(c) ((_ctype+1)[c] & (_D)) /*是数字*/
#define isgraph(c) ((_ctype+1)[c] & (_P|_U|_L|_D)) /*是图形字符*/
#define islower(c) ((_ctype+1)[c] & (_L)) /*是小写字符*/
#define isprint(c) ((_ctype+1)[c] & (_P|_U|_L|_D|_SP))
/*可打印字符*/
#define ispunct(c) ((_ctype+1)[c] & (_P))
/*是标点符号*/
#define isspace(c) ((_ctype+1)[c] & (_S))
/*是空白字符如空格,\f \n \r \t \v */
#define isupper(c) ((_ctype+1)[c] & (_U))
/*是大写字符*/
#define isxdigit(c) ((_ctype+1)[c] & (_D|_X))
/*是16进制数字*/
/**/
#define isaxcii(c) (((unsigned) c)<=0x7f)
/*判断是否是ascii码*/
#define toascii(c) (((unsigned)c)&0x7f)
/*转换成ascii码*/
#define tolower(c) (_ctmp=c,isupper(_ctmp)?_ctmp-('A'-'a'):_ctmp) /*转换成小写字符*/
#define toupper(c) (_ctmp=c,islower(_ctmp)?_ctmp-('a'-'A'):_ctmp) /*转换成大写字符*/
#endif