bo getchar() pobiera znak do bufora i zależnie ile ich tam jest (bo przy każdym kliknięciu znak jest ładowany na bufor [czyli taką tablicę]), to każdy pobiera i porównuje z EOF, który widocznie jest stałą określającą numer ASCII końca linii i jeżeli na taki nie natrafi, to wypisuje c, a w c zawsze siedzi znak z bufora.