Wyświetlenie ilości wierszy, słów i znaków

0

Program ma wyświetlać ilość wierszy słów i znaków. Jednak nie wiem dlaczego nie pokazuje mi ich w konsoli. Po wpisaniu ciągu znaków wyświetla się jedynie możliwość ponownego wpisywania znaków. Program pochodzi z książki język "Język ANSI C", być może źle zrozumiałem jego działanie. Bardzo prosiłbym o sprostowanie :)

#include <stdio.h>
#define IN 1
#define OUT 0
int main()
{
    int c, nl, nc, nw, 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);
}
1

Zly warunek w petli. EOF to koniec pliku.
Jak zrobisz (Linux) cat somefile | ./your_program to zadziala. Jak wyslesz z konsoli (ctrl+D) EOF to tez zadziala.
Jak chcesz zatrzymac przy koncu lini dodaj cos w stylu: getchar()!='\n'

1 użytkowników online, w tym zalogowanych: 0, gości: 1