Soy un principiante completo en la progtwigción de C y tengo una pregunta. Traeré un código simple como ejemplo:
#include int main( void ) { int x; printf( "Please type the number 10." ); scanf( "%i\n", &x ); if ( x == 10 ) printf( "Thank you!\n" ); return 0; }
Como se esperaba, cuando compilo y ejecuto este progtwig, mi terminal muestra el mensaje:
"Please type the number 10."
Luego espera la entrada, así que escribo el número que solicita (10) y presiono ENTER . El problema es que después de presionar ENTER una vez, se mueve a una nueva línea y espera más entrada. Solo después de escribir 10 y presionar ENTER de nuevo, realmente continúa (… para mostrar “¡Gracias!”).
Así que parece que tengo que presionar ENTER dos veces para que se acepte mi entrada. ¿Alguien sabe por qué pasa esto?
En realidad, scanf
no emite avisos y si incluye algo que no sea el especificador de formato, debe ingresar la entrada de manera inexacta, por eso debe presionar ENTER nuevamente.
Cambia esto :
scanf( "%i\n", &x ); // ^ // | remove extra \n
a esto:
scanf( "%i", &x );
Es el “\ n” en su llamada a scanf
. Elimine eso y scanf
regresará después de escanear el valor entero que solicitó.
Nota: Esto no tiene nada que ver con el hecho de que la llamada a scanf
está precedida por un printf
.