1*357f1050SThomas Veerman /* $NetBSD: mywc.c,v 1.1.1.1 2009/10/26 00:28:34 christos Exp $ */ 2*357f1050SThomas Veerman 3*357f1050SThomas Veerman /* A simple but fairly efficient C version of the Unix "wc" tool */ 4*357f1050SThomas Veerman 5*357f1050SThomas Veerman #include <stdio.h> 6*357f1050SThomas Veerman #include <ctype.h> 7*357f1050SThomas Veerman 8*357f1050SThomas Veerman main() 9*357f1050SThomas Veerman { 10*357f1050SThomas Veerman register int c, cc = 0, wc = 0, lc = 0; 11*357f1050SThomas Veerman FILE *f = stdin; 12*357f1050SThomas Veerman 13*357f1050SThomas Veerman while ((c = getc(f)) != EOF) { 14*357f1050SThomas Veerman ++cc; 15*357f1050SThomas Veerman if (isgraph(c)) { 16*357f1050SThomas Veerman ++wc; 17*357f1050SThomas Veerman do { 18*357f1050SThomas Veerman c = getc(f); 19*357f1050SThomas Veerman if (c == EOF) 20*357f1050SThomas Veerman goto done; 21*357f1050SThomas Veerman ++cc; 22*357f1050SThomas Veerman } while (isgraph(c)); 23*357f1050SThomas Veerman } 24*357f1050SThomas Veerman if (c == '\n') 25*357f1050SThomas Veerman ++lc; 26*357f1050SThomas Veerman } 27*357f1050SThomas Veerman done: printf( "%8d%8d%8d\n", lc, wc, cc ); 28*357f1050SThomas Veerman } 29