#include int main () { char loop='y'; while(loop != 'n') { printf("loop? "); scanf("%c", &loop); if(loop != 'y') { loop='n'; } } return 0; }
Si escribo ‘y’, reinicia el ciclo while, pero ignora el scanf la segunda vez y termina el ciclo después de eso. ¿Alguien puede ayudar?
Asegúrese de que el scanf
descarte la nueva línea. Cambiarlo a:
scanf(" %c", &loop); ^
Probablemente tengas que ingresar una nueva línea para que la entrada vaya a tu progtwig, ¿verdad? La segunda vez que el ciclo se ejecuta, lee ese carácter de nueva línea, que estaba “esperando” ser leído y sale automáticamente del ciclo ( '\n' != 'y'
). Puede hacer que scanf ignore el espacio en blanco usando en su lugar esta cadena de formato:
" %c"
Una solución puede ser el uso de fflush(stdin)
después de la instrucción scanf()
para borrar el buffer de entrada.