25 Years of Programming
An open source source for C, C++, OWL, BASIC, MDB, XLS, DOT, and more...
Home   Projects   Up   Sitemap   Search   Blog   Forum+Chat   About Us   Privacy   Terms of Use   Feedback   FAQ   Images   Services   Payments   Humor   Music

Borland C++ program to classify ASCII chars by type

ischars.cpp is a Borland C++ 4.0 MSDOS console utility program that shows how each of the 256 ASCII characters gets classified by the classification functions isalnum, isalpha, isascii, iscntrl, isdigit, isxdigit, isgraph, isprint, ispunct, isupper, islower, and isspace.

The program writes the output table to a file with the columns delimited by tabs so the text can be imported into Excel or Access.

The output table below shows that in Borland 4.0 under MSDOS 6, these functions only classified characters in the "real" ASCII set, up to ASCII 127. Characters above 127 did not belong to any of these sets. 

ischars.cpp

/*	ischars.cpp	  			2-21-01
	Copyright (C)2001 Steven Whitney.
	Published under GNU GPL (General Public License) Version 3, with ABSOLUTELY NO WARRANTY.
	Initially published by http://25yearsofprogramming.com.

Trivial utility creates a file with all 256 chars classified by the various
Borland C++ 4.0 isascii(), etc. functions, with columns tab-delimited for output
to Excel or Access.

Used for building definitions and attribute lists for the chars in wtalk.mdb.
Keep for a while in case it must be rebuilt.

*/
#include "c:\bcs\my.h"
#include "c:\bcs\mylib.cpp"

//////////////////////////////////////////////////////////////////////////////
int main(int argc, char **argv)
{
ofstream outfile("ischars.txt");

outfile << "No."  << "\t" << "Char"  << "\t";
outfile << "ascii" << "\t" << "control" << "\t" << "space" << "\t" << "print" << "\t";
outfile << "graph" << "\t" << "punct" << "\t" << "alnum" << "\t" << "digit" << "\t";
outfile << "xdigit" << "\t" << "alpha" << "\t" << "upper" << "\t" << "lower" << endl;

for(int c = 0 ; c < 256 ; c++)
{
	outfile << c << "\t" << (isprint(c) ? (uchar)c : '.') << "\t";
	outfile << (isascii(c) ? "X" : "O") << "\t";
	outfile << (iscntrl(c) ? "X" : "O") << "\t";
	outfile << (isspace(c) ? "X" : "O") << "\t";
	outfile << (isprint(c) ? "X" : "O") << "\t";
	outfile << (isgraph(c) ? "X" : "O") << "\t";
	outfile << (ispunct(c) ? "X" : "O") << "\t";
	outfile << (isalnum(c) ? "X" : "O") << "\t";
	outfile << (isdigit(c) ? "X" : "O") << "\t";
	outfile << (isxdigit(c) ? "X" : "O") << "\t";
	outfile << (isalpha(c) ? "X" : "O") << "\t";
	outfile << (isupper(c) ? "X" : "O") << "\t";
	outfile << (islower(c) ? "X" : "O") << endl;
}
return(0);
}

This is its output:

X = Yes, the character does belong to this set.
O = No, the character does not belong to this set.

Char#   Print.
No.	Char	ascii	control	space	print	graph	punct	alnum	digit	xdigit	alpha	upper	lower
0	.	X	X	O	O	O	O	O	O	O	O	O	O
1	.	X	X	O	O	O	O	O	O	O	O	O	O
2	.	X	X	O	O	O	O	O	O	O	O	O	O
3	.	X	X	O	O	O	O	O	O	O	O	O	O
4	.	X	X	O	O	O	O	O	O	O	O	O	O
5	.	X	X	O	O	O	O	O	O	O	O	O	O
6	.	X	X	O	O	O	O	O	O	O	O	O	O
7	.	X	X	O	O	O	O	O	O	O	O	O	O
8	.	X	X	O	O	O	O	O	O	O	O	O	O
9	.	X	X	X	O	O	O	O	O	O	O	O	O
10	.	X	X	X	O	O	O	O	O	O	O	O	O
11	.	X	X	X	O	O	O	O	O	O	O	O	O
12	.	X	X	X	O	O	O	O	O	O	O	O	O
13	.	X	X	X	O	O	O	O	O	O	O	O	O
14	.	X	X	O	O	O	O	O	O	O	O	O	O
15	.	X	X	O	O	O	O	O	O	O	O	O	O
16	.	X	X	O	O	O	O	O	O	O	O	O	O
17	.	X	X	O	O	O	O	O	O	O	O	O	O
18	.	X	X	O	O	O	O	O	O	O	O	O	O
19	.	X	X	O	O	O	O	O	O	O	O	O	O
20	.	X	X	O	O	O	O	O	O	O	O	O	O
21	.	X	X	O	O	O	O	O	O	O	O	O	O
22	.	X	X	O	O	O	O	O	O	O	O	O	O
23	.	X	X	O	O	O	O	O	O	O	O	O	O
24	.	X	X	O	O	O	O	O	O	O	O	O	O
25	.	X	X	O	O	O	O	O	O	O	O	O	O
26	.	X	X	O	O	O	O	O	O	O	O	O	O
27	.	X	X	O	O	O	O	O	O	O	O	O	O
28	.	X	X	O	O	O	O	O	O	O	O	O	O
29	.	X	X	O	O	O	O	O	O	O	O	O	O
30	.	X	X	O	O	O	O	O	O	O	O	O	O
31	.	X	X	O	O	O	O	O	O	O	O	O	O
32	 	X	O	X	X	O	O	O	O	O	O	O	O
33	!	X	O	O	X	X	X	O	O	O	O	O	O
34	"	X	O	O	X	X	X	O	O	O	O	O	O
35	#	X	O	O	X	X	X	O	O	O	O	O	O
36	$	X	O	O	X	X	X	O	O	O	O	O	O
37	%	X	O	O	X	X	X	O	O	O	O	O	O
38	&	X	O	O	X	X	X	O	O	O	O	O	O
39	'	X	O	O	X	X	X	O	O	O	O	O	O
40	(	X	O	O	X	X	X	O	O	O	O	O	O
41	)	X	O	O	X	X	X	O	O	O	O	O	O
42	*	X	O	O	X	X	X	O	O	O	O	O	O
43	+	X	O	O	X	X	X	O	O	O	O	O	O
44	,	X	O	O	X	X	X	O	O	O	O	O	O
45	-	X	O	O	X	X	X	O	O	O	O	O	O
46	.	X	O	O	X	X	X	O	O	O	O	O	O
47	/	X	O	O	X	X	X	O	O	O	O	O	O
48	0	X	O	O	X	X	O	X	X	X	O	O	O
49	1	X	O	O	X	X	O	X	X	X	O	O	O
50	2	X	O	O	X	X	O	X	X	X	O	O	O
51	3	X	O	O	X	X	O	X	X	X	O	O	O
52	4	X	O	O	X	X	O	X	X	X	O	O	O
53	5	X	O	O	X	X	O	X	X	X	O	O	O
54	6	X	O	O	X	X	O	X	X	X	O	O	O
55	7	X	O	O	X	X	O	X	X	X	O	O	O
56	8	X	O	O	X	X	O	X	X	X	O	O	O
57	9	X	O	O	X	X	O	X	X	X	O	O	O
58	:	X	O	O	X	X	X	O	O	O	O	O	O
59	;	X	O	O	X	X	X	O	O	O	O	O	O
60	<	X	O	O	X	X	X	O	O	O	O	O	O
61	=	X	O	O	X	X	X	O	O	O	O	O	O
62	>	X	O	O	X	X	X	O	O	O	O	O	O
63	?	X	O	O	X	X	X	O	O	O	O	O	O
64	@	X	O	O	X	X	X	O	O	O	O	O	O
65	A	X	O	O	X	X	O	X	O	X	X	X	O
66	B	X	O	O	X	X	O	X	O	X	X	X	O
67	C	X	O	O	X	X	O	X	O	X	X	X	O
68	D	X	O	O	X	X	O	X	O	X	X	X	O
69	E	X	O	O	X	X	O	X	O	X	X	X	O
70	F	X	O	O	X	X	O	X	O	X	X	X	O
71	G	X	O	O	X	X	O	X	O	O	X	X	O
72	H	X	O	O	X	X	O	X	O	O	X	X	O
73	I	X	O	O	X	X	O	X	O	O	X	X	O
74	J	X	O	O	X	X	O	X	O	O	X	X	O
75	K	X	O	O	X	X	O	X	O	O	X	X	O
76	L	X	O	O	X	X	O	X	O	O	X	X	O
77	M	X	O	O	X	X	O	X	O	O	X	X	O
78	N	X	O	O	X	X	O	X	O	O	X	X	O
79	O	X	O	O	X	X	O	X	O	O	X	X	O
80	P	X	O	O	X	X	O	X	O	O	X	X	O
81	Q	X	O	O	X	X	O	X	O	O	X	X	O
82	R	X	O	O	X	X	O	X	O	O	X	X	O
83	S	X	O	O	X	X	O	X	O	O	X	X	O
84	T	X	O	O	X	X	O	X	O	O	X	X	O
85	U	X	O	O	X	X	O	X	O	O	X	X	O
86	V	X	O	O	X	X	O	X	O	O	X	X	O
87	W	X	O	O	X	X	O	X	O	O	X	X	O
88	X	X	O	O	X	X	O	X	O	O	X	X	O
89	Y	X	O	O	X	X	O	X	O	O	X	X	O
90	Z	X	O	O	X	X	O	X	O	O	X	X	O
91	[	X	O	O	X	X	X	O	O	O	O	O	O
92	\	X	O	O	X	X	X	O	O	O	O	O	O
93	]	X	O	O	X	X	X	O	O	O	O	O	O
94	^	X	O	O	X	X	X	O	O	O	O	O	O
95	_	X	O	O	X	X	X	O	O	O	O	O	O
96	`	X	O	O	X	X	X	O	O	O	O	O	O
97	a	X	O	O	X	X	O	X	O	X	X	O	X
98	b	X	O	O	X	X	O	X	O	X	X	O	X
99	c	X	O	O	X	X	O	X	O	X	X	O	X
100	d	X	O	O	X	X	O	X	O	X	X	O	X
101	e	X	O	O	X	X	O	X	O	X	X	O	X
102	f	X	O	O	X	X	O	X	O	X	X	O	X
103	g	X	O	O	X	X	O	X	O	O	X	O	X
104	h	X	O	O	X	X	O	X	O	O	X	O	X
105	i	X	O	O	X	X	O	X	O	O	X	O	X
106	j	X	O	O	X	X	O	X	O	O	X	O	X
107	k	X	O	O	X	X	O	X	O	O	X	O	X
108	l	X	O	O	X	X	O	X	O	O	X	O	X
109	m	X	O	O	X	X	O	X	O	O	X	O	X
110	n	X	O	O	X	X	O	X	O	O	X	O	X
111	o	X	O	O	X	X	O	X	O	O	X	O	X
112	p	X	O	O	X	X	O	X	O	O	X	O	X
113	q	X	O	O	X	X	O	X	O	O	X	O	X
114	r	X	O	O	X	X	O	X	O	O	X	O	X
115	s	X	O	O	X	X	O	X	O	O	X	O	X
116	t	X	O	O	X	X	O	X	O	O	X	O	X
117	u	X	O	O	X	X	O	X	O	O	X	O	X
118	v	X	O	O	X	X	O	X	O	O	X	O	X
119	w	X	O	O	X	X	O	X	O	O	X	O	X
120	x	X	O	O	X	X	O	X	O	O	X	O	X
121	y	X	O	O	X	X	O	X	O	O	X	O	X
122	z	X	O	O	X	X	O	X	O	O	X	O	X
123	{	X	O	O	X	X	X	O	O	O	O	O	O
124	|	X	O	O	X	X	X	O	O	O	O	O	O
125	}	X	O	O	X	X	X	O	O	O	O	O	O
126	~	X	O	O	X	X	X	O	O	O	O	O	O
127	.	X	X	O	O	O	O	O	O	O	O	O	O
128	.	O	O	O	O	O	O	O	O	O	O	O	O
129	.	O	O	O	O	O	O	O	O	O	O	O	O
130	.	O	O	O	O	O	O	O	O	O	O	O	O
131	.	O	O	O	O	O	O	O	O	O	O	O	O
132	.	O	O	O	O	O	O	O	O	O	O	O	O
133	.	O	O	O	O	O	O	O	O	O	O	O	O
134	.	O	O	O	O	O	O	O	O	O	O	O	O
135	.	O	O	O	O	O	O	O	O	O	O	O	O
136	.	O	O	O	O	O	O	O	O	O	O	O	O
137	.	O	O	O	O	O	O	O	O	O	O	O	O
138	.	O	O	O	O	O	O	O	O	O	O	O	O
139	.	O	O	O	O	O	O	O	O	O	O	O	O
140	.	O	O	O	O	O	O	O	O	O	O	O	O
141	.	O	O	O	O	O	O	O	O	O	O	O	O
142	.	O	O	O	O	O	O	O	O	O	O	O	O
143	.	O	O	O	O	O	O	O	O	O	O	O	O
144	.	O	O	O	O	O	O	O	O	O	O	O	O
145	.	O	O	O	O	O	O	O	O	O	O	O	O
146	.	O	O	O	O	O	O	O	O	O	O	O	O
147	.	O	O	O	O	O	O	O	O	O	O	O	O
148	.	O	O	O	O	O	O	O	O	O	O	O	O
149	.	O	O	O	O	O	O	O	O	O	O	O	O
150	.	O	O	O	O	O	O	O	O	O	O	O	O
151	.	O	O	O	O	O	O	O	O	O	O	O	O
152	.	O	O	O	O	O	O	O	O	O	O	O	O
153	.	O	O	O	O	O	O	O	O	O	O	O	O
154	.	O	O	O	O	O	O	O	O	O	O	O	O
155	.	O	O	O	O	O	O	O	O	O	O	O	O
156	.	O	O	O	O	O	O	O	O	O	O	O	O
157	.	O	O	O	O	O	O	O	O	O	O	O	O
158	.	O	O	O	O	O	O	O	O	O	O	O	O
159	.	O	O	O	O	O	O	O	O	O	O	O	O
160	.	O	O	O	O	O	O	O	O	O	O	O	O
161	.	O	O	O	O	O	O	O	O	O	O	O	O
162	.	O	O	O	O	O	O	O	O	O	O	O	O
163	.	O	O	O	O	O	O	O	O	O	O	O	O
164	.	O	O	O	O	O	O	O	O	O	O	O	O
165	.	O	O	O	O	O	O	O	O	O	O	O	O
166	.	O	O	O	O	O	O	O	O	O	O	O	O
167	.	O	O	O	O	O	O	O	O	O	O	O	O
168	.	O	O	O	O	O	O	O	O	O	O	O	O
169	.	O	O	O	O	O	O	O	O	O	O	O	O
170	.	O	O	O	O	O	O	O	O	O	O	O	O
171	.	O	O	O	O	O	O	O	O	O	O	O	O
172	.	O	O	O	O	O	O	O	O	O	O	O	O
173	.	O	O	O	O	O	O	O	O	O	O	O	O
174	.	O	O	O	O	O	O	O	O	O	O	O	O
175	.	O	O	O	O	O	O	O	O	O	O	O	O
176	.	O	O	O	O	O	O	O	O	O	O	O	O
177	.	O	O	O	O	O	O	O	O	O	O	O	O
178	.	O	O	O	O	O	O	O	O	O	O	O	O
179	.	O	O	O	O	O	O	O	O	O	O	O	O
180	.	O	O	O	O	O	O	O	O	O	O	O	O
181	.	O	O	O	O	O	O	O	O	O	O	O	O
182	.	O	O	O	O	O	O	O	O	O	O	O	O
183	.	O	O	O	O	O	O	O	O	O	O	O	O
184	.	O	O	O	O	O	O	O	O	O	O	O	O
185	.	O	O	O	O	O	O	O	O	O	O	O	O
186	.	O	O	O	O	O	O	O	O	O	O	O	O
187	.	O	O	O	O	O	O	O	O	O	O	O	O
188	.	O	O	O	O	O	O	O	O	O	O	O	O
189	.	O	O	O	O	O	O	O	O	O	O	O	O
190	.	O	O	O	O	O	O	O	O	O	O	O	O
191	.	O	O	O	O	O	O	O	O	O	O	O	O
192	.	O	O	O	O	O	O	O	O	O	O	O	O
193	.	O	O	O	O	O	O	O	O	O	O	O	O
194	.	O	O	O	O	O	O	O	O	O	O	O	O
195	.	O	O	O	O	O	O	O	O	O	O	O	O
196	.	O	O	O	O	O	O	O	O	O	O	O	O
197	.	O	O	O	O	O	O	O	O	O	O	O	O
198	.	O	O	O	O	O	O	O	O	O	O	O	O
199	.	O	O	O	O	O	O	O	O	O	O	O	O
200	.	O	O	O	O	O	O	O	O	O	O	O	O
201	.	O	O	O	O	O	O	O	O	O	O	O	O
202	.	O	O	O	O	O	O	O	O	O	O	O	O
203	.	O	O	O	O	O	O	O	O	O	O	O	O
204	.	O	O	O	O	O	O	O	O	O	O	O	O
205	.	O	O	O	O	O	O	O	O	O	O	O	O
206	.	O	O	O	O	O	O	O	O	O	O	O	O
207	.	O	O	O	O	O	O	O	O	O	O	O	O
208	.	O	O	O	O	O	O	O	O	O	O	O	O
209	.	O	O	O	O	O	O	O	O	O	O	O	O
210	.	O	O	O	O	O	O	O	O	O	O	O	O
211	.	O	O	O	O	O	O	O	O	O	O	O	O
212	.	O	O	O	O	O	O	O	O	O	O	O	O
213	.	O	O	O	O	O	O	O	O	O	O	O	O
214	.	O	O	O	O	O	O	O	O	O	O	O	O
215	.	O	O	O	O	O	O	O	O	O	O	O	O
216	.	O	O	O	O	O	O	O	O	O	O	O	O
217	.	O	O	O	O	O	O	O	O	O	O	O	O
218	.	O	O	O	O	O	O	O	O	O	O	O	O
219	.	O	O	O	O	O	O	O	O	O	O	O	O
220	.	O	O	O	O	O	O	O	O	O	O	O	O
221	.	O	O	O	O	O	O	O	O	O	O	O	O
222	.	O	O	O	O	O	O	O	O	O	O	O	O
223	.	O	O	O	O	O	O	O	O	O	O	O	O
224	.	O	O	O	O	O	O	O	O	O	O	O	O
225	.	O	O	O	O	O	O	O	O	O	O	O	O
226	.	O	O	O	O	O	O	O	O	O	O	O	O
227	.	O	O	O	O	O	O	O	O	O	O	O	O
228	.	O	O	O	O	O	O	O	O	O	O	O	O
229	.	O	O	O	O	O	O	O	O	O	O	O	O
230	.	O	O	O	O	O	O	O	O	O	O	O	O
231	.	O	O	O	O	O	O	O	O	O	O	O	O
232	.	O	O	O	O	O	O	O	O	O	O	O	O
233	.	O	O	O	O	O	O	O	O	O	O	O	O
234	.	O	O	O	O	O	O	O	O	O	O	O	O
235	.	O	O	O	O	O	O	O	O	O	O	O	O
236	.	O	O	O	O	O	O	O	O	O	O	O	O
237	.	O	O	O	O	O	O	O	O	O	O	O	O
238	.	O	O	O	O	O	O	O	O	O	O	O	O
239	.	O	O	O	O	O	O	O	O	O	O	O	O
240	.	O	O	O	O	O	O	O	O	O	O	O	O
241	.	O	O	O	O	O	O	O	O	O	O	O	O
242	.	O	O	O	O	O	O	O	O	O	O	O	O
243	.	O	O	O	O	O	O	O	O	O	O	O	O
244	.	O	O	O	O	O	O	O	O	O	O	O	O
245	.	O	O	O	O	O	O	O	O	O	O	O	O
246	.	O	O	O	O	O	O	O	O	O	O	O	O
247	.	O	O	O	O	O	O	O	O	O	O	O	O
248	.	O	O	O	O	O	O	O	O	O	O	O	O
249	.	O	O	O	O	O	O	O	O	O	O	O	O
250	.	O	O	O	O	O	O	O	O	O	O	O	O
251	.	O	O	O	O	O	O	O	O	O	O	O	O
252	.	O	O	O	O	O	O	O	O	O	O	O	O
253	.	O	O	O	O	O	O	O	O	O	O	O	O
254	.	O	O	O	O	O	O	O	O	O	O	O	O
255	.	O	O	O	O	O	O	O	O	O	O	O	O

 


 

Valid HTML 4.01 Transitional Valid CSS
Yahoo! Search
Search the web Search this site
View content labeling at ICRA.