cwc

Word count program not working. Code sample From the Book The C-programming Language Ritchie & Kernighan


This is the code sample for the word counting program. But it's not working. When we execute it, after entering words it is supposed to display the results, but it is not producing anything.Anything missing in this code ?

#include<stdio.h>

#define IN  1 /* inside a word */
#define OUT 0 /* outside a word */

/* counts 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);
}

Solution

  • Your code is fine. You have to ask yourself how to break the while loop as it continuously reading input i.e. how to send EOF to your program.

    On *nix systems, you do CTRL+D and on Windows you do CTRL+Z to generate EOF.

    Also: use one of standard signature for main() such asint main(void).