
Peeyush
Tengo problemas con este código de lenguaje C:
char st[2];
printf("enter first value:");
scanf("%c", &st[0]);
printf("enter second value:");
scanf("%c", &st[1]);
Entonces mi computadora no me pidió que ingrese el segundo valor, quiero decir que solo imprime el primero printf
declaración, luego ingreso un carácter y luego solo imprime el segundo printf
La declaración y el programa finalizan sin tomar la segunda entrada.
Por favor ayuda. ¿Qué tiene de malo este código?
-Gracias por adelantado.
Bueno, lo hizo. Los caracteres producidos por la tecla ENTER ya están presentes en el búfer.
Creo que su problema es que el segundo scanf recibe la tecla “Enter”.
Obtiene la nueva línea implícita que ingresó como el segundo carácter, es decir st[1]
está obteniendo el valor '\n'
. Una manera fácil de solucionar esto es incluir la nueva línea en la cadena de formato esperada: scanf("%c\n", &st[0]);
utilizar fflush(stdin);
función antes de la segunda scanf();
. Vaciará la tecla ENTER generada después del primer scanf();. En realidad, su segundo scanf() está tomando ENTER como su entrada y dado que scanf termina después de obtener ENTER, no está tomando nada más a su lado.
Cambiar
scanf("%c", &st[0]);
a esto
scanf(" %c", &st[0]);
Esa es una respuesta incompleta (sin verificación de errores ni nada) pero es rápida y fácil.
posible duplicado: stackoverflow.com/questions/1669821/…
– Alam
26 de octubre de 2010 a las 12:32
Debe ser el día para
scanf
preguntas. Mismo problema que este, creo. []()– El Pablo arquetípico
26 de octubre de 2010 a las 12:33