diff options
Diffstat (limited to 'ch1/wc.c')
-rw-r--r-- | ch1/wc.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ch1/wc.c b/ch1/wc.c new file mode 100644 index 0000000..4a5007d --- /dev/null +++ b/ch1/wc.c @@ -0,0 +1,29 @@ +#include<stdio.h> + +#define IN 1 // inside a word +#define OUT 0 // outside a word + +/* + * Count lines, words, and characters in input. + */ +main() { + int c, nl, nw, nc, state; + + state = OUT; + nl = nw = nc = 0; + + while ((c = getchar()) != EOF) { + ++nc; + + if (c == '\n') + ++nl; + if (c == ' ' || c == '\n' || c == '\t') + state = OUT; + else if (state == OUT) { + state = IN; + ++nw; + } + } + + printf("%d %d %d\n", nl, nw, nc); +} |