EDIT: vabbè troppo tardi...
Il libro che ti hanno passato è stato scritto da coloro che hanno standardizzato il linguaggio (Ritchie ne è anche l'ideatore insieme a Thompson), e questo è più che una garanzia del suo valore.
Per quanto riguarda quel codice, sei sicuro che sia scritto esattamente così sul libro?
In ogni caso hai ragione, va messa una parentesi chiusa prima del simbolo ! e a quel punto funziona correttamente. E' chiaro che il ciclo leggerà caratteri fino al carattere di End Of File che di default dovrebbe essere ctrl+d o ctrl+z (mi pare cambia a seconda del sistema) e che a limite puoi anche ridefinire tu con una #define ma se hai cominciato a studiare il C da poco lascia stare...
Insomma se stai su Ubuntu compila (dopo aver corretto quell'errore), scrivi tutte le righe che vuoi e poi dai "ctrl+d"; a quel punto ti si visualizzerà il numero delle righe che hai scritto.
Comunque mi sembra davvero strano quell'errore in un libro come quello...