Fflush

Rev
06 de Abril del 2004
Alguien puede decirme que hace la función

fflush(stdin);

y para que puedo usarla?

De antemano gracias a todos esos genios que puedan ayudarme.

Alejandro_
06 de Abril del 2004
fflush está definido como:

int fflush(FILE *stream);

y se ocupa de "limpiar" (como en un inodoro) un stream (flujo o, en general, un archivo):

Si el stream fue abierto para escritura: fueza la escritura de los datos retenidos en el buffer.
Si el stream fue abierto para lectura: limpia el contenido del buffer de entrada.


Fíjate que aquí el flujo de entrada estándar, o stdin, se trata de la misma manera que un archivo. Esto es así desde que el lenguaje C nació en unix.

fflush() devuelve cero si tuvo éxito, o EOF en caso contrario.

Un ejemplo clásico: El programa lee la primera palabra de una oración con scanf() y "flush" el resto. scanf() puede leer la primer palabra de la segunda oración porque fflush() "limpió" las palabras que quedaban en el buffer:

#include <stdio.h>
int main()
{
int n;
char string[80];
for ( n=0 ; n<2 ; n++ )
{
printf( "Escribe algunas palabras: " );
scanf( "%s", string );
printf( "La primer palabra escrita fue: %sn", string );
fflush ( stdin );
}
return 0;
}

//----------------------------

Salida:
Escribe algunas palabras: Primeras palabras...
La primera palabra escrita fue: Primeras
Escribe algunas palabras: Otra serie de palabras...
La primera palabra escrita fue: Otra
//-----------------------------

Alejandro

Rev
06 de Abril del 2004
Gracias alejandro eso es lo que necesitaba