Quiero hacer un bucle while que continuamente está pidiendo a un usuario una entrada hasta que el usuario ctrl-d esté fuera de él. ¿Cómo puedo hacer esto correctamente? Estoy usando esto ahora mismo:
while (1) { printf("Enter host name: "); fgets(user_input, 1000, stdin); }
Esto funciona, excepto que el usuario tiene que pulsar ctrl-c para finalizar el progtwig. Estoy deseando continuamente pedirle al usuario su opinión hasta que toque ctrl-d. ¿Cómo puedo hacer esto?
Tienes que probar EOF, que es lo que devuelve CTRL-D.
Así que haz esto:
while ( fgets( ... ) != NULL ) { ... }
EDITAR:
Ya que estás pidiendo, aún mejor sería:
for ( ;; ) { printf( "enter input: " ); fflush( NULL ); // make sure prompt is actually displayed, credit Basile Starynkevitch if ( fgets( input, ... ) == NULL ) break; // handle input here }
Un ctrl-d enviará un carácter EOF
(final de archivo), que se traduce en fgets
como un puntero NULO:
while (fgets(user_input, 1000, stdin) != NULL) { // do stuff... } // no more user input