Да, но проблема усугубляется использованием именно signed char (по умолчанию, если не указана опция компилятора). Если бы использовали unsigned char, то сравнение с -1 (EOF) проходило бы правильно и т.о. буква я не воспринималась как EOF, но проверка на нормальный EOF отвалилась бы и программист стал бы разбираться и обнаружил ошибку.