| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
luistorcol
Registrado: 01 Sep 2006 Mensajes: 114
| Publicado: 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
| Publicado: 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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |