On Mon, Jul 01, 2002 at 10:32:14PM +0200, Esteban Garcia Cuesta wrote: > Hola, > Estoy usando la funcion de fflush (stdin)para limpiar el buffer de > entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un > getchar() y este me coge basura, sin quedarse a la espera por teclado que > es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de > fflush). > Sabeis porque puede ser? Hace tiempo que no programo en C pero no > recuerdo que esto me pasara.
He encontrado esto buscando en devhelp:
Function: int fflush (FILE *stream)
This function causes any buffered output on stream to be delivered to
the file.
No dice nada de que vac�e el buffer. Si lo que quieres es vaciarlo
creo que tendr�s que leerlo hasta que no haya nada que leer. En un
men� que le�a n�meros hice lo siguiente para asegurarme de que siempre
le�a un n�mero ("%d") y no otra cosa:
char trash[100];
...
printf ("\n Opci�n: ");
while (scanf ("%d", &op) != 1) {
scanf ("%99s", trash);
printf ("\n La opci�n %s es incorrecta.", trash);
printf ("\n Opci�n: ");
} /* while */
Aprovecho que scanf() devuelve el n�mero de variables que ha logrado
leer, y si ese n�mero no es el esperado leo el buffer hasta que
encuentro un n�mero.
Creo que si lo que quieres es leer el buffer podr�as hacer lo siguiente:
trash char[4096];
...
scanf ("%4095s", trash);
getchar ();
Saludos :-)
--
--==-- --==-- Miguel �ngel Vilela --==-- --==--
a.k.a miguev at fmat.ull.es, GULiC, Barrapunto & IRC-Hispano
GULiC - Grupo de Usuarios Linux de Canarias - http://www.gulic.org
Facultad de Matem�ticas, Universidad La Laguna --- www.fmat.ull.es
Public GPG key at http://search.keyserver.net (search for: miguev)
Linux Reg. User #184518 - Debian GNU/Linux SID - kernel 2.4.18-xfs
Linux Reg. Machines: #81674, #81677, #105478, #118020, #118022
-- Linux Driver Petition #73209 --- No ePatents Petition #80354 --
Rules for Academic Deans:
(1) HIDE!!!!
(2) If they find you, LIE!!!!
-- Father Damian C. Fandal
pgpJE0vbcJv1N.pgp
Description: PGP signature

