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
Attachment:
pgp1hbEeh45tQ.pgp
Description: PGP signature