Estoy ejecutando el siguiente programa del libro Lenguaje de programación C:
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
O
#include<stdio.h>
int main(){
int c = getchar();
while(c != EOF){
putchar(c);
c = getchar();
}
}
Cuando ejecuto este programa, obtengo un comportamiento inexplicable. Si ingreso caracteres desde la línea de comando en la siguiente secuencia: {'h', 'e', 'l', 'l', 'o', '\n', '^D'}
luego obtengo la siguiente respuesta impresa en la pantalla: hello
después \n
se ingresa, y el programa se cierra una vez ^D
en ingresado.
Sin embargo, cuando cambio la secuencia de la siguiente manera: {'h', 'e', 'l', 'l', 'o', '^D'}
luego obtengo la siguiente respuesta impresa en la pantalla: hello
, pero el programa no se cierra. ¿No debería dejar de funcionar una vez que entro? ^D
? tengo que entrar ^D
una segunda vez para que el programa se cierre. O el programa solo se cierra después de haber ingresado ^D
siguiente \n
. No entiendo por qué el programa no se cierra no importa cuando entro ^D
. ¿Alguna idea?
Estoy ejecutando en un sistema UNIX.