#include unsigned char _ctype[256] = { 0, // -1 EOF _CTYPE_ISCONTROL, // 00 (NUL) _CTYPE_ISCONTROL, // 01 (SOH) _CTYPE_ISCONTROL, // 02 (STX) _CTYPE_ISCONTROL, // 03 (ETX) _CTYPE_ISCONTROL, // 04 (EOT) _CTYPE_ISCONTROL, // 05 (ENQ) _CTYPE_ISCONTROL, // 06 (ACK) _CTYPE_ISCONTROL, // 07 (BEL) _CTYPE_ISCONTROL, // 08 (BS) _CTYPE_ISSPACE+_CTYPE_ISCONTROL, // 09 (HT) _CTYPE_ISSPACE+_CTYPE_ISCONTROL, // 0A (LF) _CTYPE_ISSPACE+_CTYPE_ISCONTROL, // 0B (VT) _CTYPE_ISSPACE+_CTYPE_ISCONTROL, // 0C (FF) _CTYPE_ISSPACE+_CTYPE_ISCONTROL, // 0D (CR) _CTYPE_ISCONTROL, // 0E (SI) _CTYPE_ISCONTROL, // 0F (SO) _CTYPE_ISCONTROL, // 10 (DLE) _CTYPE_ISCONTROL, // 11 (DC1) _CTYPE_ISCONTROL, // 12 (DC2) _CTYPE_ISCONTROL, // 13 (DC3) _CTYPE_ISCONTROL, // 14 (DC4) _CTYPE_ISCONTROL, // 15 (NAK) _CTYPE_ISCONTROL, // 16 (SYN) _CTYPE_ISCONTROL, // 17 (ETB) _CTYPE_ISCONTROL, // 18 (CAN) _CTYPE_ISCONTROL, // 19 (EM) _CTYPE_ISCONTROL, // 1A (SUB) _CTYPE_ISCONTROL, // 1B (ESC) _CTYPE_ISCONTROL, // 1C (FS) _CTYPE_ISCONTROL, // 1D (GS) _CTYPE_ISCONTROL, // 1E (RS) _CTYPE_ISCONTROL, // 1F (US) _CTYPE_ISSPACE+_CTYPE_ISBLANK, // 20 SPACE _CTYPE_ISPUNCT, // 21 ! _CTYPE_ISPUNCT, // 22 " _CTYPE_ISPUNCT, // 23 # _CTYPE_ISPUNCT, // 24 $ _CTYPE_ISPUNCT, // 25 % _CTYPE_ISPUNCT, // 26 & _CTYPE_ISPUNCT, // 27 ' _CTYPE_ISPUNCT, // 28 ( _CTYPE_ISPUNCT, // 29 ) _CTYPE_ISPUNCT, // 2A * _CTYPE_ISPUNCT, // 2B + _CTYPE_ISPUNCT, // 2C , _CTYPE_ISPUNCT, // 2D - _CTYPE_ISPUNCT, // 2E . _CTYPE_ISPUNCT, // 2F / _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 30 0 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 31 1 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 32 2 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 33 3 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 34 4 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 35 5 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 36 6 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 37 7 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 38 8 _CTYPE_ISDIGIT+_CTYPE_ISHEX, // 39 9 _CTYPE_ISPUNCT, // 3A : _CTYPE_ISPUNCT, // 3B ; _CTYPE_ISPUNCT, // 3C < _CTYPE_ISPUNCT, // 3D = _CTYPE_ISPUNCT, // 3E > _CTYPE_ISPUNCT, // 3F ? _CTYPE_ISPUNCT, // 40 @ _CTYPE_ISUPPER+_CTYPE_ISHEX, // 41 A _CTYPE_ISUPPER+_CTYPE_ISHEX, // 42 B _CTYPE_ISUPPER+_CTYPE_ISHEX, // 43 C _CTYPE_ISUPPER+_CTYPE_ISHEX, // 44 D _CTYPE_ISUPPER+_CTYPE_ISHEX, // 45 E _CTYPE_ISUPPER+_CTYPE_ISHEX, // 46 F _CTYPE_ISUPPER, // 47 G _CTYPE_ISUPPER, // 48 H _CTYPE_ISUPPER, // 49 I _CTYPE_ISUPPER, // 4A J _CTYPE_ISUPPER, // 4B K _CTYPE_ISUPPER, // 4C L _CTYPE_ISUPPER, // 4D M _CTYPE_ISUPPER, // 4E N _CTYPE_ISUPPER, // 4F O _CTYPE_ISUPPER, // 50 P _CTYPE_ISUPPER, // 51 Q _CTYPE_ISUPPER, // 52 R _CTYPE_ISUPPER, // 53 S _CTYPE_ISUPPER, // 54 T _CTYPE_ISUPPER, // 55 U _CTYPE_ISUPPER, // 56 V _CTYPE_ISUPPER, // 57 W _CTYPE_ISUPPER, // 58 X _CTYPE_ISUPPER, // 59 Y _CTYPE_ISUPPER, // 5A Z _CTYPE_ISPUNCT, // 5B [ _CTYPE_ISPUNCT, // 5C backslash _CTYPE_ISPUNCT, // 5D ] _CTYPE_ISPUNCT, // 5E ^ _CTYPE_ISPUNCT, // 5F _ _CTYPE_ISPUNCT, // 60 ` _CTYPE_ISLOWER+_CTYPE_ISHEX, // 61 a _CTYPE_ISLOWER+_CTYPE_ISHEX, // 62 b _CTYPE_ISLOWER+_CTYPE_ISHEX, // 63 c _CTYPE_ISLOWER+_CTYPE_ISHEX, // 64 d _CTYPE_ISLOWER+_CTYPE_ISHEX, // 65 e _CTYPE_ISLOWER+_CTYPE_ISHEX, // 66 f _CTYPE_ISLOWER, // 67 g _CTYPE_ISLOWER, // 68 h _CTYPE_ISLOWER, // 69 i _CTYPE_ISLOWER, // 6A j _CTYPE_ISLOWER, // 6B k _CTYPE_ISLOWER, // 6C l _CTYPE_ISLOWER, // 6D m _CTYPE_ISLOWER, // 6E n _CTYPE_ISLOWER, // 6F o _CTYPE_ISLOWER, // 70 p _CTYPE_ISLOWER, // 71 q _CTYPE_ISLOWER, // 72 r _CTYPE_ISLOWER, // 73 s _CTYPE_ISLOWER, // 74 t _CTYPE_ISLOWER, // 75 u _CTYPE_ISLOWER, // 76 v _CTYPE_ISLOWER, // 77 w _CTYPE_ISLOWER, // 78 x _CTYPE_ISLOWER, // 79 y _CTYPE_ISLOWER, // 7A z _CTYPE_ISPUNCT, // 7B { _CTYPE_ISPUNCT, // 7C + _CTYPE_ISPUNCT, // 7D } _CTYPE_ISPUNCT, // 7E ~ _CTYPE_ISCONTROL, // 7F (DEL) // and the rest are 0... }; int toupper(int c) { return ((islower(c)) ? (c-'a'+'A') : c); } int tolower(int c) { return((isupper(c)) ? (c-'A'+'a') : c); }