getchar no se toma en consideración después de scanf

Estoy aprendiendo la progtwigción en C y traté de crear un progtwig que le pregunte al usuario su edad. Cuando el usuario escribe su edad (por ejemplo, 18) recibe el mensaje “Así que tienes 18 años”. Cuando ejecuto el archivo .exe, se cierra automáticamente después de ver el mensaje, tan rápido que no lo ve. Luego agregué getchar para que el usuario lea el mensaje y luego presione Intro. Aquí está el progtwig que escribí:

#include  #include  int main() { int age=0; printf("How old are you?\n"); scanf("%d",&age); printf("So you're %d years old", age); getchar(); return 0; } 

Desafortunadamente, cuando ejecuto el archivo .exe, aún se cierra automáticamente, como si no existiera getchar () y no sé por qué.

 scanf("%d",&age); 

Cuando la ejecución del progtwig alcanza la línea anterior, escribe un número entero y presiona intro. El entero es ocupado por scanf y el \n (carácter de nueva línea o Enter) que ha presionado permanece en el stdin que está ocupado por el getchar() . Para deshacerse de él, reemplace su scanf con

 scanf("%d%*c",&age); 

%*c le dice a scanf que escanee un carácter y luego lo descarte. En su caso, %*c lee el carácter de nueva línea y lo descarta.

Otra forma sería eliminar el stdin utilizando lo siguiente después de scanf en su código:

 while ( (c = getchar()) != '\n' && c != EOF ); 

Tenga en cuenta que c es un int en la línea anterior

Solo tiene problemas para ver el resultado porque está iniciando el progtwig desde un entorno de ventanas, y la ventana se cierra tan pronto como se completan sus tareas internas. Si ejecuta el progtwig comstackdo desde una línea de comando en una ventana de shell preexistente (Linux, Mac o Windows), los resultados permanecerán en la pantalla después de que vuelva a la solicitud (a menos que haya finalizado ejecutando un pantalla clara de algún tipo). Aún mejor, en ese caso, no necesita la llamada getchar () extraña.

Para Windows, después de abrir la ventana del símbolo del sistema, emitiría un comando “cd” para cambiar al directorio que contiene el progtwig comstackdo y luego escribir su nombre. Para Linux (y, supongo, Mac, ya que Mac es UNIX bajo el capó), deberá escribir ./ delante del nombre del progtwig después de cambiar al directorio apropiado con “cd”.