The following code is from K&R The C Programming Language.
I compile the code with gcc wordCount.c
on a UNIX system through putty. After compiling I run ./a.out
and regardless of what arguments I pass after ./a.out
it returns nothing and loops infinitely.
I am a C beginner, and I am very lost but very enthusiastic to learn. Could anyone point me in the right direction?
/* This program is a bare-bones version of the UNIX program wc. */
#include <stdio.h>
#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */
/* count lines, words, and characters in input */
int main(void) {
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);
return 0;
}