Ovako, komandom getchar() ucitavas neki niz u bafer stdio-a dok se vrednost prvog unetog elementa vraca(tip je int) i pozicija unutar bafer se postavlja na 2. znak po redu. dakle ako se unese "toxi", 't' ce biti vraceno a pozicija unutar bafera postavljena na znak 'o'. U bafer ce se smestiti svi znaci koje si otkucao pre ENTER tj.prelaska u novi red ali ce se u bafer smestiti i taj simbol za novi red( '\n' ). Dakle u pitanju je nacin baferovanja stdin-a, dakle on se baferuje u redove.
Kada se u while petlji dodje na f-ju getchar, za razliku od prvog puta program nece cekati da se nova vrednost unese dok se god u baferu nalaze znaci. Kada se oni svi prikazu (tj pozicija unutar bafera pokazuje na simbol '\0') uslov petlje je i dalje vazeci i zato ti program trazi da uneses novi tekst.
-Vidi, unesi "REC" i pritisni ctrl + z. Nista se nece desiti dok ne pritisnes enter. Onda ce se ispisati "REC", prelazi se u novi red i program se zatvara. Dakle tekst se programu "predaje" po pritisku na enter, to je ustaljeno ponasanje.
Kao slucija, mozes sve snimati u jednu promenljivu char[ 1000 ] pa po nailasku na EOF znak to sve prikazati.