xref: /netbsd-src/external/bsd/flex/dist/examples/fastwc/mywc.c (revision 30da1778c39cfb1c029d9367865462f181007762)
13c3a7b76Schristos /* A simple but fairly efficient C version of the Unix "wc" tool */
23c3a7b76Schristos 
33c3a7b76Schristos #include <stdio.h>
43c3a7b76Schristos #include <ctype.h>
53c3a7b76Schristos 
main()63c3a7b76Schristos main()
73c3a7b76Schristos {
8*30da1778Schristos 	int c, cc = 0, wc = 0, lc = 0;
93c3a7b76Schristos 	FILE *f = stdin;
103c3a7b76Schristos 
113c3a7b76Schristos 	while ((c = getc(f)) != EOF) {
123c3a7b76Schristos 		++cc;
133c3a7b76Schristos 		if (isgraph(c)) {
143c3a7b76Schristos 			++wc;
153c3a7b76Schristos 			do {
163c3a7b76Schristos 				c = getc(f);
173c3a7b76Schristos 				if (c == EOF)
183c3a7b76Schristos 					goto done;
193c3a7b76Schristos 				++cc;
203c3a7b76Schristos 			} while (isgraph(c));
213c3a7b76Schristos 		}
223c3a7b76Schristos 		if (c == '\n')
233c3a7b76Schristos 			++lc;
243c3a7b76Schristos 	}
253c3a7b76Schristos done:	printf( "%8d%8d%8d\n", lc, wc, cc );
263c3a7b76Schristos }
27