Show the types of all the ASCII characters
This is an example C program which prints what character types are true for all of the ascii characters from 0 to 127.
#include <ctype.h> #include <stdio.h> #include <string.h> /* Define a typedef for use in our struct. */ typedef int (*isfunc_t) (int); /* Define a macro to initialize the elements of the struct. */ #define F(x) {x, #x} struct iser { isfunc_t f; const char * name; } isers[] = { F (isalnum), F (isalpha), F (isascii), F (isblank), F (iscntrl), F (isdigit), F (isgraph), F (islower), F (isnumber), F (isprint), F (ispunct), F (isspace), F (isupper), F (isxdigit), }; #define n_isers (sizeof (isers)/sizeof (struct iser)) /* Print a header for the table, going vertically. */ static void print_header () { int i; int max_len = 0; int l[n_isers]; const char * spacer = " "; for (i = 0; i < n_isers; i++) { l[i] = strlen (isers[i].name); if (l[i] > max_len) { max_len = l[i]; } } for (i = 0; i < max_len; i++) { int j; printf ("%s|", spacer); for (j = 0; j < n_isers; j++) { if (i < l[j]) { printf ("%c|", isers[j].name[i]); } else { printf (" |"); } } printf ("\n"); } } static void print_types () { int c; for (c = 0; c < 128; c++) { int i; printf ("%02X %03o ", c, c); if (isprint (c)) { printf ("%c ", c); } else { printf ("-- "); } printf ("|"); for (i = 0; i < n_isers; i++) { int ok; ok = isers[i].f (c); if (ok) { printf ("O"); } else { printf ("X"); } printf ("|"); } printf ("\n"); } } int main () { print_header (); print_types (); return 0; }
The output of the example looks like this:
|i|i|i|i|i|i|i|i|i|i|i|i|i|i|
|s|s|s|s|s|s|s|s|s|s|s|s|s|s|
|a|a|a|b|c|d|g|l|n|p|p|s|u|x|
|l|l|s|l|n|i|r|o|u|r|u|p|p|d|
|n|p|c|a|t|g|a|w|m|i|n|a|p|i|
|u|h|i|n|r|i|p|e|b|n|c|c|e|g|
|m|a|i|k|l|t|h|r|e|t|t|e|r|i|
| | | | | | | | |r| | | | |t|
00 000 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
01 001 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
02 002 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
03 003 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
04 004 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
05 005 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
06 006 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
07 007 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
08 010 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
09 011 -- |X|X|O|O|O|X|X|X|X|X|X|O|X|X|
0A 012 -- |X|X|O|X|O|X|X|X|X|X|X|O|X|X|
0B 013 -- |X|X|O|X|O|X|X|X|X|X|X|O|X|X|
0C 014 -- |X|X|O|X|O|X|X|X|X|X|X|O|X|X|
0D 015 -- |X|X|O|X|O|X|X|X|X|X|X|O|X|X|
0E 016 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
0F 017 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
10 020 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
11 021 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
12 022 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
13 023 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
14 024 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
15 025 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
16 026 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
17 027 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
18 030 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
19 031 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
1A 032 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
1B 033 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
1C 034 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
1D 035 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
1E 036 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
1F 037 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
20 040 |X|X|O|O|X|X|X|X|X|O|X|O|X|X|
21 041 ! |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
22 042 " |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
23 043 # |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
24 044 $ |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
25 045 % |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
26 046 & |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
27 047 ' |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
28 050 ( |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
29 051 ) |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
2A 052 * |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
2B 053 + |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
2C 054 , |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
2D 055 - |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
2E 056 . |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
2F 057 / |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
30 060 0 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
31 061 1 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
32 062 2 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
33 063 3 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
34 064 4 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
35 065 5 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
36 066 6 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
37 067 7 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
38 070 8 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
39 071 9 |O|X|O|X|X|O|O|X|O|O|X|X|X|O|
3A 072 : |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
3B 073 ; |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
3C 074 < |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
3D 075 = |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
3E 076 > |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
3F 077 ? |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
40 100 @ |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
41 101 A |O|O|O|X|X|X|O|X|X|O|X|X|O|O|
42 102 B |O|O|O|X|X|X|O|X|X|O|X|X|O|O|
43 103 C |O|O|O|X|X|X|O|X|X|O|X|X|O|O|
44 104 D |O|O|O|X|X|X|O|X|X|O|X|X|O|O|
45 105 E |O|O|O|X|X|X|O|X|X|O|X|X|O|O|
46 106 F |O|O|O|X|X|X|O|X|X|O|X|X|O|O|
47 107 G |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
48 110 H |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
49 111 I |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
4A 112 J |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
4B 113 K |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
4C 114 L |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
4D 115 M |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
4E 116 N |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
4F 117 O |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
50 120 P |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
51 121 Q |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
52 122 R |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
53 123 S |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
54 124 T |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
55 125 U |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
56 126 V |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
57 127 W |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
58 130 X |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
59 131 Y |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
5A 132 Z |O|O|O|X|X|X|O|X|X|O|X|X|O|X|
5B 133 [ |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
5C 134 \ |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
5D 135 ] |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
5E 136 ^ |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
5F 137 _ |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
60 140 ` |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
61 141 a |O|O|O|X|X|X|O|O|X|O|X|X|X|O|
62 142 b |O|O|O|X|X|X|O|O|X|O|X|X|X|O|
63 143 c |O|O|O|X|X|X|O|O|X|O|X|X|X|O|
64 144 d |O|O|O|X|X|X|O|O|X|O|X|X|X|O|
65 145 e |O|O|O|X|X|X|O|O|X|O|X|X|X|O|
66 146 f |O|O|O|X|X|X|O|O|X|O|X|X|X|O|
67 147 g |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
68 150 h |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
69 151 i |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
6A 152 j |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
6B 153 k |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
6C 154 l |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
6D 155 m |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
6E 156 n |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
6F 157 o |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
70 160 p |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
71 161 q |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
72 162 r |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
73 163 s |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
74 164 t |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
75 165 u |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
76 166 v |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
77 167 w |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
78 170 x |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
79 171 y |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
7A 172 z |O|O|O|X|X|X|O|O|X|O|X|X|X|X|
7B 173 { |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
7C 174 | |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
7D 175 } |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
7E 176 ~ |X|X|O|X|X|X|O|X|X|O|O|X|X|X|
7F 177 -- |X|X|O|X|O|X|X|X|X|X|X|X|X|X|
Copyright © Ben Bullock 2009-2025. All
rights reserved.
For comments, questions, and corrections, please email
Ben Bullock
(benkasminbullock@gmail.com).
/
Privacy /
Disclaimer