[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Re: fflush(stdin) no limpia por que??



Miguel Ángel Vilela escribió::
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 :-)
  
fflush(stdin) debería funcionar sin problemas para borrar el buffer, es lo que dice el manual y yo lo he utilizao sin problemas.

-- 
  Héctor Andrés Rompato Carricart <hrompato@au-laplata.com.ar>
  Coordinador técnico
  COVIARES S.A. -- Autopista La Plata - Buenos Aires
  Gerencia de equipos y sistemas

  Av. España y Autopista, Quilmes (1878)
  Buenos Aires, Argentina


-- To UNSUBSCRIBE, email to debian-user-spanish-request@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Reply to: