HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
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
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
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 ... |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
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:
Codice sorgente - presumibilmente Plain Text |
ma ci sono diverse controindicazioni.
Per quanto riguarda il problema del flush dell'stdin, la funzione fflush è standard:
Codice sorgente - presumibilmente Plain Text |
Ultima modifica effettuata da HeDo il 29/09/2009 alle 14:10 |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da HeDo:
Per quanto riguarda il problema del flush dell'stdin, la funzione fflush è standard:
Codice sorgente - presumibilmente Plain Text |
|
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. |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
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à: http://www.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? |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
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.
Mi sembra che non funzioni (come da standard). |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
|
|
Hast (Normal User)
Rookie
Messaggi: 52
Iscritto: 09/04/2009
|
Ok grazie anche se comunque avevo risolto con i due getchar() . Comunque potete chiudere
|
|