Oppure

Loading
28/09/09 5:07
theprogrammer
Perche' il tasto invio fornito con il cin, viene inserito nel buffer ma non utilizzato.

Viene quindi utilizzato subito dopo dalla prima getchar prima che tu te ne accorga.
aaa
29/09/09 11:34
HeDo

per attendere la pressione di un tasto dell'utente usa system("PAUSE";)

per ovviare al problema dei cin consecutivi devi flushare il buffer come ha detto theprogrammer :)
aaa
29/09/09 12:01
theprogrammer
Postato originariamente da HeDo:


per attendere la pressione di un tasto dell'utente usa system("PAUSE";)


Ovviamente non con Linux ...

per ovviare al problema dei cin consecutivi devi flushare il buffer come ha detto theprogrammer :)


Le getchar vanno benissimo con diversi S.O.

La flush dello stdin non è standard ...
aaa
29/09/09 12:10
HeDo
Postato originariamente da theprogrammer:

Postato originariamente da HeDo:


per attendere la pressione di un tasto dell'utente usa system("PAUSE";)


Ovviamente non con Linux ...

per ovviare al problema dei cin consecutivi devi flushare il buffer come ha detto theprogrammer :)


Le getchar vanno benissimo con diversi S.O.

La flush dello stdin non è standard ...


eh lo so, ma non ha specificato la piattaforma :)

cmq esisteva una vecchia funzione del C, che se non mi sbaglio non è nemmeno standard, ma "di solito" tutti i compilatori la forniscono, e si chiama kbhit() . La si usa in questo modo:

while(!kbhit());


ma ci sono diverse controindicazioni.

Per quanto riguarda il problema del flush dell'stdin, la funzione fflush è standard:

fflush(stdin);
Ultima modifica effettuata da HeDo 29/09/09 12:10
aaa
29/09/09 12:38
theprogrammer
Postato originariamente da HeDo:
Per quanto riguarda il problema del flush dell'stdin, la funzione fflush è standard:

fflush(stdin);


La funzione fflush e' standard ma opera correttamente solo se usata sugli stream di output.

L'uso che se ne fa con gli stream di input, come in

fflush(stdin);

NON e' standard e il suo comportamento e' indefinito. Funziona con Windows e i compilatori Microsoft.
aaa
29/09/09 14:05
HeDo
Postato originariamente da theprogrammer:

La funzione fflush e' standard ma opera correttamente solo se usata sugli stream di output.

L'uso che se ne fa con gli stream di input, come in

fflush(stdin);

NON e' standard e il suo comportamento e' indefinito. Funziona con Windows e i compilatori Microsoft.


già: cplusplus.com/reference/clibrary/cstdio/fflush/

If it was open for reading and the last operation was an input operation, the behavior depends on the specific library implementation. In some implementations this causes the input buffer to be cleared, but this is not standard behavior.


traduzione:

Se lo stream passato come argomento è stato aperto in modalità lettura e l'ultima operazione di input/output era di lettura, il comportamento della funzione dipende dall'implementazione specifica. In alcune implementazioni il buffer in input viene svuotato, ma non è il comportamento standard.


si potrebbe fare una lista di compilatori e testare il comportamento di fflush(stdin).
Credo cmq che il modo in cui lo vogliamo utilizzare noi sia uno standard "de facto" nè ufficiale nè standard ma la maggior parte dei compilatori si comporterà così.

Il gcc cosa fa?
aaa
29/09/09 15:46
theprogrammer
Postato originariamente da HeDo:
Credo cmq che il modo in cui lo vogliamo utilizzare noi sia uno standard "de facto" nè ufficiale nè standard ma la maggior parte dei compilatori si comporterà così.


Fino a poco tempo addietro, era solamente il compilatore di Microsoft che supportava tale caratteristica.

Il gcc cosa fa?


Mi sembra che non funzioni (come da standard).
aaa
29/09/09 15:48
theprogrammer
Postato originariamente da salatino:

anche io ho lo stesso prooblemanskdg xkè ho mandato un fila in caso a comprare il pane è uscito un gambale con il film di bruce chuck norris. però ensavom che forse al tramonto il sole del cieco vede meglio sottom la pance del mattino, anche se sembra srtrano am in vetrità è cosi, almeno credo. cosa ne pensate? credo che no perche se fosse si il no sarebbe l'opposto del giallo che non pensavo potesse alzare una bandiera zosi in fretta, ma 0,5 sec per fare un file in pascal con le stringe e i record dell'assempler non pesa come un fil .mpeg sottratto da winamp sotto la protezione di vlc perche il vba uin modalità sola lettura non permette di aprire i file con i registria scorrmenti non scorrevoli. ad ogni modo ciao amichetti vi voglio unn mare di bene!!!! :D :D :D :D


Non mi fa molto ridere ... ci sono le sezioni apposite per l'humor ... quando si sta facendo una discussione seria, questi interventi rompono solo le scatole ...
aaa