/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Vaciar el buffer de entrada.

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
luistorcol



Registrado: 01 Sep 2006
Mensajes: 114

MensajePublicado: 13/03/2014 6:42 am
Título: Vaciar el buffer de entrada.

Por favor, ¿me pueden facilitar la instrucción para vaciar el buffer de entrada? Saludos.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7527
Ubicación: Mexico

MensajePublicado: 13/03/2014 7:01 am
Título:

Si te refieres a fflush(stdin) es una extensión, esto es, no es parte del estándar de C.

Si te quieres mantener dentro de este lo usual es procesar por linea utilizando fgets o scanf. Después de esta ultima se debe utilizar un bucle para descartar el resto de la linea. Por ejemplo:
Código:
#include <stdio.h>
#include <stdlib.h>

#define NUM_CHARS  256

int main(void)
{
   char nombre[NUM_CHARS];
   char dir[NUM_CHARS];
   unsigned edad;
   int ch;
   
   printf("Introduce tu nombre: ");
   fflush(stdout);
   fgets(nombre, NUM_CHARS, stdin);
   
   printf("Introduce tu edad: ");
   fflush(stdout);
   scanf("%u", &edad);
   
   /* Descartamos el resto de la linea */
   while ((ch = getchar()) != EOF && ch != '\n')
      ;
   
   printf("Introduce tu direccion: ");
   fflush(stdout);
   fgets(dir, NUM_CHARS, stdin);
   
   /* ... */
   
   return EXIT_SUCCESS;
}


Para un proceso mas solido puedes verificar si al utilizar fgets la linea termina con el carácter '\n', de no ser así ello indica que se leyó solo parcialmente la linea (hay que leer el resto ya sea mediante otra llamada a fgets o descartarlo con un bucle como en el ejemplo).

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
luistorcol



Registrado: 01 Sep 2006
Mensajes: 114

MensajePublicado: 13/03/2014 7:20 am
Título:

Eso era lo que necesitaba. Mi error era utilizar getchar sin el paréntesis, en realidad era getchar(). Usé getchar y no se generaba ningún error.
Muchas gracias, rir !!!!
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com