No, non è standard, puo' avere effetti non previsti e soprattutto non funziona :) ho appena provato...boh ha scritto:Veramente ci sarebbeDani ha scritto:Che io sappia non c'è nulla di standard per ripulire il buffer in input, quindi uso qualcosa del genere dopo ogni getc() scanf()
Codice: Seleziona tutto
fflush(stdin);
(C) Fare una funzione pause();
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Re: (C) Fare una funzione pause();
- boh
- Linux 4.x

- Messaggi: 1027
- Iscritto il: ven 16 set 2005, 0:00
- Slackware: 14.2 (x64)
- Kernel: 4.4.111
- Desktop: KDE 4.14.32
- Località: Milano
Re: (C) Fare una funzione pause();
Non metto in dubbio quello che dici, però a noi l'hanno introdotta come un metodo per pulire il buffer in input.
Di che effetti non previsti parli?
Di che effetti non previsti parli?
"Be yourself. Everyone else is already taken." ~ Oscar Wilde
-
Mario Vanoni
- Iper Master

- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
Re: (C) Fare una funzione pause();
E` ambigua anche questa risposta:sardylan ha scritto:Dovrebbe essere la prima... La mia idea era proprio di farmi una funzione pausa che potrei richiamare prima di dare il system("clear")... Cosi' da avere tutto il tempo di vedere con comodita' l'output, e poi, quando ho finito, premo un tasto per riprendere l'esecuzione del programma...Mario Vanoni ha scritto:@sardylan
La domanda e` ambigua (pausa?):
- vuoi che il programma aspetti ad infinitum la risposta
- vuoi che il programma aspetti tot tempo e poi continui autonomo se passato il tempo definito
Grazie a tutti delle risposte... Appena finisco di risistemarmi il portatile provero' le varie soluzioni...
- getchar(3) aspetta un INVIO od un EOF (Ctrl-D) per partire, metti 50 caratteri prima, non risponde
- vedi le sorgenti p. e. di top(1) come reagire subito ad un singolo carattere senza INVIO
system("clear") non e` affidabile, io uso sempre SYSTEM("clear")
imparato da AT&T SVR2 vent'anni fa, definito in qualche *.h
#define SYSTEM(s) (fflush(stdout), system(s))
Re: (C) Fare una funzione pause();
Credo sia un errore, se non ricordo male nella documentazione di fflush() stessa c'è scritto che puo' avere comportamenti inaspettati su stdin, devo controllare, inoltre praticamente tutti sconsigliano di usarla (a parte il fatto che non ha mai funzionato su linux, almeno sul mio sistema)...Su windows invece funziona, ma non ho mai trovato una spiegazione razionaleboh ha scritto:Non metto in dubbio quello che dici, però a noi l'hanno introdotta come un metodo per pulire il buffer in input.
Di che effetti non previsti parli?
- DaD
- Linux 2.x

- Messaggi: 371
- Iscritto il: mer 7 feb 2007, 18:19
- Nome Cognome: Antonio Barra
- Slackware: 13
- Kernel: 3.0
- Desktop: KDE 4
- Distribuzione: Mac OS X
- Contatta:
Re: (C) Fare una funzione pause();
Ecco, anche io per pulire il buffer dell'input ho sempre utilizzato fflushboh ha scritto:Veramente ci sarebbeDani ha scritto:Che io sappia non c'è nulla di standard per ripulire il buffer in input, quindi uso qualcosa del genere dopo ogni getc() scanf()
Codice: Seleziona tutto
fflush(stdin);
- sardylan
- Linux 3.x

- Messaggi: 993
- Iscritto il: mar 24 apr 2007, 9:21
- Nome Cognome: Luca Cireddu
- Slackware: current 64bits
- Kernel: 3.16
- Desktop: KDE 4.14
- Distribuzione: Debian - CLFS
- Località: Cagliari
- Contatta:
Re: (C) Fare una funzione pause();
OK... Ho provato fflush prima di getcahr per pulire lo stdin, ed ora fa il suo dovere...
E funziona benissimo anche il consiglio di Mario per la SYSTEM(s)... Grazie a tutti... Perfetto..
E funziona benissimo anche il consiglio di Mario per la SYSTEM(s)... Grazie a tutti... Perfetto..