Newsgroup: it.comp.lang.c
Titolo: ciao a tutti, mi presento e faccio una domanda...

Ciao a tutti voi del NG. E' solo qualche giorno che vi seguo.
Sto studiando Ing Elt e ho iniziato a studiare il C al corso di Informatica
1.
Mi piace molto programmare in C. I miei linguaggi di programmazione sono
sempre stati l'assembler e il Pascal. Mi piace molto programmare con
l'assembler e mi son subito ritrovato con il C, un linguaggi compatto,
sintetico e che permette strutture di basso livello.
Spero di poter partecipare con voi a questo NG.
Comunque avevo una domanda da fare.
Qual'č l'istruzione C per pulire il buffer della tastiera? (Se c'č)
Grazie...
...Ciao

 Qual'č l'istruzione C per pulire il buffer della tastiera? (Se c'č)
   Non c'e` ovvero lo standard non prevede la significativita` di cio` 
che chiedi.
<cite src="
http://www.eskimo.com/~scs/C-faq/q12.26.html
">
	Question 12.26
	How can I flush pending input so that a user's typeahead
	isn't read at the next prompt? Will fflush(stdin) work?
	fflush is defined only for output streams. Since its
	definition of ``flush'' is to complete the writing of
	buffered characters (not to discard them), discarding
	unread input would not be an analogous meaning for fflush
	on input streams.
	There is no standard way to discard unread characters from
	a stdio input stream, nor would such a way be sufficient
	unread characters can also accumulate in other, OS-level
	input buffers.
	References: ANSI Sec. 4.9.5.2
	ISO Sec. 7.9.5.2
	H&S Sec. 15.2
</cite>
--
Alla prossima,
Marco

Qual'č l'istruzione C per pulire il buffer della tastiera? (Se c'č)
Non esiste una funzione del genere, cosi' come non esiste in
Pascal.  In realta', gli standard dei linguaggi non sanno
neanche cosa siano i buffer di tastiera (a dire il vero non
sanno neanche cosa sia la tastiera :), pero'...
...l'I/O standard implementato in C prevede una
"bufferizzazione".  Le funzioni standard, difatti, sono
line-buffered, nel senso che leggono in un buffer in memoria
tutto cio' che viene digitato sino al new-line (anch'esso
viene memorizzato).  Dato che molto spesso serve leggere
dalla tastiera un tasto alla volta, puo' essere utile, dopo
una funzione standard come getchar(), per esempio, leggere
tutto cio' che rimane nel buffer sino al new-line
(svuotandolo quindi).
Questo e' quello che si intende, comunemente, con "svuotare
il buffer di tastiera" in C, ovvero leggere tutto il
contenuto nel buffer, dopo aver compiuto la prima lettura
significativa.
Per esempio, se io ho il codice seguente:
#include <stdio.h>
int main()
{
    int c, d, e;
 
    c = getchar();
    d = getchar();
    e = getchar();
    return 0;
}
Non e' detto che i tre input si traducano in una richiesta
esplicita nei confronti dell'utente.
Basta, infatti, scrivere "pippo" e battere invio al primo
input, perche' gli input successivi al primo prelevino dal
buffer e non facciano richiesta all'utente.
Per forzare l'input da parte dell'utente, bisogna, appunto,
svuotare il buffer di lettura con qualcosa del tipo:
void flushkbdbuff( void )
{
     while (getchar() != '\n');
}
Quindi il codice diventa:
#include <stdio.h>
void flushkbdbuff( void )
{
     while (getchar() != '\n');
}
int main()
{
    int c, d, e;
 
    c = getchar(); 
    flushkbdbuff();
    d = getchar(); 
    flushkbdbuff();
    e = getchar(); 
    flushkbdbuff();
    return 0;
}
Non so se sono stato chiaro, se hai problemi, scrivimi in
privato :)
-- 
The Follet

 ha scritto nel messaggio
news:3be4082...@news.tin.it...
