#include #include #define MAXFUNCNAME 8 #define NFUNC 12 static char is_functions[NFUNC][MAXFUNCNAME + 1] = { "isalnum ", "isalpha ", "isascii ", "iscntrl ", "isdigit ", "isgraph ", "islower ", "isprint ", "ispunct ", "isspace ", "isupper ", "isxdigit" }; char* char_names[] = { "nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel", "bs ", "ht ", "nl ", "vt ", "np ", "cr ", "so ", "si ", "dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb", "can", "em ", "sub", "esc", "fs ", "gs ", "rs ", "us ", "sp ", " ! ", " \" ", " # ", " $ ", " % ", " & ", " ' ", " ( ", " ) ", " * ", " + ", " , ", " - ", " . ", " / ", " 0 ", " 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 ", " : ", " ; ", " < ", " = ", " > ", " ? ", " @ ", " A ", " B ", " C ", " D ", " E ", " F ", " G ", " H ", " I ", " J ", " K ", " L ", " M ", " N ", " O ", " P ", " Q ", " R ", " S ", " T ", " U ", " V ", " W ", " X ", " Y ", " Z ", " [ ", " \\ ", " ] ", " ^ ", " _ ", " ` ", " a ", " b ", " c ", " d ", " e ", " f ", " g ", " h ", " i ", " j ", " k ", " l ", " m ", " n ", " o ", " p ", " q ", " r ", " s ", " t ", " u ", " v ", " w ", " x ", " y ", " z ", " { ", " | ", " } ", " ~ ", "del" }; void print_header(void) { const int left_margin = 11; int i, j; for(i = 0; i < MAXFUNCNAME; i++) { for(j = 0; j < left_margin; j++) putchar(' '); for(j = 0; j < NFUNC; j++) { putchar(is_functions[j][i]); putchar(' '); putchar(' '); } putchar('\n'); } for(j = 0; j < left_margin; j++) putchar(' '); for(j = 0; j < NFUNC - 1; j++) { putchar('+'); putchar('-'); putchar('-'); } putchar('+'); putchar('\n'); } int main(int argc, char** argv) { int i, j, opt8; int status[NFUNC]; if(argc == 2 && argv[1][0] == '-' && argv[1][1] == '8' && argv[1][2] == '\0') opt8 = 1; else opt8 = 0; print_header(); for(i = 0; i <= 127; i++) { printf("0x%02x(%s) ", i, char_names[i]); for(j = 0; j < NFUNC; j++) status[j] = 0; j = 0; status[j++] = isalnum(i); status[j++] = isalpha(i); status[j++] = isascii(i); status[j++] = iscntrl(i); status[j++] = isdigit(i); status[j++] = isgraph(i); status[j++] = islower(i); status[j++] = isprint(i); status[j++] = ispunct(i); status[j++] = isspace(i); status[j++] = isupper(i); status[j++] = isxdigit(i); putchar(' '); for(j = 0; j < NFUNC; j++) { if(status[j]) putchar('T'); else putchar('.'); putchar(' '); putchar(' '); } putchar('\n'); } if(opt8) { for(; i <= 255; i++) { printf("0x%02x(...) ", i); for(j = 0; j < NFUNC; j++) status[j] = 0; j = 0; status[j++] = isalnum(i); status[j++] = isalpha(i); status[j++] = isascii(i); status[j++] = iscntrl(i); status[j++] = isdigit(i); status[j++] = isgraph(i); status[j++] = islower(i); status[j++] = isprint(i); status[j++] = ispunct(i); status[j++] = isspace(i); status[j++] = isupper(i); status[j++] = isxdigit(i); putchar(' '); for(j = 0; j < NFUNC; j++) { if(status[j]) putchar('T'); else putchar('.'); putchar(' '); putchar(' '); } putchar('\n'); } } return 0; }