El segundo scanf no funciona

1 minuto de lectura

El segundo scanf no funciona
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.

  • 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


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.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad