Es hat einen Grund, daß getc(3) den Rückgabetypen int hat und nicht etwa char. Die Konstante EOF läßt sich sonst nämlich mit einem gelesenen Zeichen verwechseln.

EOF ist in der GNU-C-Bibliothek als -1 definiert, weshalb es als char nicht unterscheidbar vom Zeichen mit der Nummer 255 ist. Analoges gilt für wchar_t und wint_t mit WEOF als problematischer Wert.