Duda básica de int y char

hola! Tengo una duda con el siguiente pedazo de código que estoy armando:


int num;
char c;
printf("Ingrese un numero: ");
scanf("%d",&num);
printf("\nEl numero ingresado es: %d",num);
printf("\nIngrese una letra: ");
scanf("%c",&c);
printf("\nLa letra es%c",c);

return 0;


no se porque funciona bien hasta la parte de imprimir el numero ingresado
pero después no me permite ingresar la letra! No entiendo porque si
invierto el orden (primero leer y escribir carácter) sí funciona! Hay
algo mal??
gracias de antemano!

Respuesta
1

Recuerdo cuando lo estudié en el insti que el scanf daba problemas y el profe nos recomendó usar getche que lee caracteres por separado, combinándolo con un bucle puedes implementar una lectura más versátil.

Buscando en internet he encontrado la razón por la que scanf a veces no lee caracteres correctamente. Es tan simple como que el buffer de teclado no está vacío antes de leer y al parecer scanf falla por eso. No lo entiendo muy bien, quizás sea por caracteres especiales como al pulsar el return u otras teclas que conllevan dos caracteres. En fin, que la solución es llamar a fflush( stdin ); que vacía el buffer de teclado antes de llamar a scanf.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas