Duda sobre do while

Iniciado por lucians, 6 Junio 2015, 15:35 PM

0 Miembros y 1 Visitante están viendo este tema.

rir3760

Cita de: lucians en  6 Junio 2015, 18:22 PM
Muchísimas gracias, teníais razón, había que limpiar el bufe. Le he puesto
fflush(stdin) antes de los printf y va perfecto.
fflush(stdin) no se recomienda, las razones de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Tu problema se genera porque "%c" no descarta el espacio blanco antes de consumir los caracteres validos para la conversión indicada. Por ejemplo si al pedir el tipo de conversión introduces:
E{ENTER}
La primera llamada a scanf consume el carácter 'E', el carácter '\n' generado al presionar {ENTER} se queda en el bufer de la entrada estándar y es consumido por la segunda llamada a scanf.

Para evitarlo basta con utilizar " %c" en las dos llamadas a scanf.

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