Para plantear mi duda dejo el código fuente:
Código:
/* Limpieza de caracteres adicionales de stdin. */
#include <stdio.h>
void clear_kb(void);
main()
{
int age;
char name[20];
/* Pide la edad del usuario. */
puts("Enter your age.");
scanf("%d", &age);
/* Limpia a stdin de cualquier carácter adicional. */
clear_kb();
/* Pide ahora el nombre del usuario. */
puts("Enter your first name.");
scanf("%s", name);
/* Display the data. */
printf("Your age is %d.\n", age);
printf("Your name is %s.\n", name);
}
void clear_kb(void)
/* Limpia a stdin de cualquier carácter que esté en espera. */
{
char junk[80];
gets(junk);
}
El código es muy sencillito y entiendo lo que hace, pero me surge una duda con la función clear_kb. La duda es que por qué si normalmente cuando se llama a gets(), esta función recoge carácteres hasta que encuentra un retorno de carro, en este caso la función no espera la entrada de carácteres. Entiendo que no lo haga cuándo limpia el buffer del teclado, pues para eso está, pero lo que no entiendo es: ¿Por qué la función no espera la entrada de carácteres cuando el buffer de teclado está limpio?
Espero respuestas. Espero haberme explicado en condiciones.
Gracias de antemano.