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