Devi fare esattamente come ti ha indicato il tuo libro:

cnt_char<cnt_char.c


funziona sotto dos, in questo modo si setta come standard input per il programma cnt_char.exe non quello che l'utente scrive sulla console, ma il contenuto del file passato (cnt_char.c); per la precisione io ottengo il seguente output:

codice:
    blanks    digits   letters     lines    others     total

        96        32       327        26       176       657

Per farlo funzionare il file .c deve essere nella stessa cartella dell'eseguibile, e devi correggere un errore che hai fatto nel listato, sostituendo la riga

while ((c == getchar()) != 'a')

con

while ((c = getchar()) != EOF)

(nota che c'è un solo '=' e non due come hai sritto tu!)