Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

getchar() HELP

[es] :: C/C++ programiranje :: getchar() HELP

[ Pregleda: 2312 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zeco

Član broj: 5873
Poruke: 9
*.cmu.carnet.hr



Profil

icon getchar() HELP25.06.2003. u 00:00 - pre 253 meseci
#include <stdio.h>


void main ()
{
char ch;
while(1) {

ch=getchar();
printf("%c ",ch);

if (ch==EOF) break;
}

}

Rezultat:

Upišem "sto je ovo" i stisnem i tek onda ispiše ispiše "sto je ovo".
Problem:
Zašto nakon svakog mog ispisanog slova ne ispisuje to slovo nego tek kad stisnem enter. Čini se da tek kad stisnem enter izvršava se printf, ali se petlja while izvodi za svako upisano slovo samo bez izvođenja printf-a.
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.dial.InfoSky.Net

Sajt: www.mycity.rs


+1 Profil

icon Re: getchar() HELP25.06.2003. u 00:39 - pre 253 meseci
mislim da je to do konzole, a ne do tvog programa
vecina konzola namerno ne 'stampa' liniju sve dok se \n ne 'posalje' konzoli
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: getchar() HELP25.06.2003. u 03:42 - pre 253 meseci
Najbolji odgovor bi možda bio - pogledaj u dokumentaciji kako interno rade baferi u STDIO-u. Najkraće rečeno STDIO koristi različite vrste baferovanja kada su razne stvari u pitanju - generalno ovde mislim da je u pitanju linearno baferovanje (bafer se "flush"-uje kad se pojavi LineFeed karakter)... Naravno, ispravite me ako grešim. :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: getchar() HELP25.06.2003. u 15:09 - pre 253 meseci
Jeste, Leka je u pravu, ali čini mi se da se to ne može rešiti za ulazne fajlove, ili bar ne može za stdin. Preporučujem da koristiš ncurses biblioteku za takve stvari, ili već neku od sistemskih funkcija (npr. čitaš direktno sa /dev/tty*).

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

zeco

Član broj: 5873
Poruke: 9
*.cmu.carnet.hr



Profil

icon Re: getchar() HELP25.06.2003. u 15:21 - pre 253 meseci
Jeli možda moguće da je on napravio printf i pohranio ga u međuspremnik ali tek kad stisnem enter onda se iz međuspremnika ispisuje na stdout. Tako je berem sa datotekama. Ako sa nekoliko fprintf upisujemo nešto u datoteku onda se to upisuje u datoteku tek kad zatvorimo datoteku ili napravimo fflush(). Da li je moguće da kad stisnemo enter poslije upisa ima za stdout istu funkciju kao što je za datoteke na disku fclose() i fflush.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: getchar() HELP25.06.2003. u 18:30 - pre 253 meseci
Mislim da se tip baferovanja MOŽE promeniti, ali s obzirom da to nikada nisam radio - ne znam kako. Čini mi se da sam u "Advanced Programming in UNIX Environment" davno pročitao nešto u vezi toga - možda grešim, a možda i ne - kad odem kući pogledaću.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: getchar() HELP25.06.2003. u 20:30 - pre 253 meseci
Leko, za to se koriste funkcije setbuf, setvbuf i slične, ali prema mom iskustvu, one ne rade sa stdin-om (zapravo, man stranica pominje keširanje samo za izlazne strimove, a ne za ulazne, kakav je stdin). Čini mi se da sam u nekoj draft specifikaciji ISO C-a 99 video da je stdin linijski baferisan, i da to nije moguće izmeniti.

Uostalom, ovo je problem na koji mnogi početnici nalete, i bilo bi čudno da postoji rešenje nezavisno od sistema, a da ga niko ne zna napamet ;-)

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.verat.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: getchar() HELP03.07.2003. u 22:27 - pre 253 meseci
leka je u pravu to moze da se podesi unutar termios strukture , a ako nekoga mrzi to da radi postoji program stty koji radi sve sto mozes sam da uradis sa termiosom

znaci tty -icanon, i program ce ispisivati svako slovo nakon sto bude bilo procitano, a ne nakon znaka za novi red. Najbolji test za ovo vam je cat . E sada kako ovo na MS Windowsima uraditi nemojte mene pitati
 
Odgovor na temu

[es] :: C/C++ programiranje :: getchar() HELP

[ Pregleda: 2312 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.