13c3a7b76Schristos /* A simple but fairly efficient C version of the Unix "wc" tool */ 23c3a7b76Schristos 33c3a7b76Schristos #include <stdio.h> 43c3a7b76Schristos #include <ctype.h> 53c3a7b76Schristos main()63c3a7b76Schristosmain() 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