Fflush
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.
fflush(stdin);
y para que puedo usarla?
De antemano gracias a todos esos genios que puedan ayudarme.
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
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
