Tengo dificultades para entender getchar()
. En el siguiente programa getchar
funciona como se esperaba:getchar no se detiene al usar scanf
#include <stdio.h>
int main()
{
printf("Type Enter to continue...");
getchar();
return 0;
}
Sin embargo, en el siguiente programa, getchar
no crea un retraso y termina el programa:
#include <stdio.h>
int main()
{
char command[100];
scanf("%s", command);
printf("Type Enter to continue...");
getchar();
return 0;
}
He la siguiente solución weired, que trabaja , pero no entiendo por qué:
#include <stdio.h>
int main()
{
char command[100];
int i;
scanf("%s", command);
printf("Type Enter to continue...");
while (getchar() != '\n') {
i=0;
}
getchar();
return 0;
}
Así que mis preguntas son: 1. ¿Qué
es scanf
haciendo? ¿Por qué scanf
hace esto?
2. ¿Por qué funciona mi trabajo?
3. ¿Qué es una buena manera de emular el siguiente código Python:
raw_input("Type Enter to continue")
+1 Me pregunto si un EOF es likley cuando 'stdin' permanece unido a la consola? Sin duda, puede ocurrir si 'stdin' se redirige de un archivo, lo que hace que mi respuesta sea menos robusta. – Clifford
No es probable, pero por supuesto uno puede escribir Ctrl-D (Ctr-Z en Windows, iirc) para cerrar la secuencia. Gracias por la edición, por cierto. –