De acuerdo con la definición de getchar() que lee un carácter desde la entrada estándar. Desafortunadamente stdin se confunde con el teclado, que podría no ser el caso de getchar. getchar usa un buffer como stdin y lee un solo caracter a la vez. En su caso, dado que no hay EOF, el getchar y el putchar se ejecutan varias veces y le parece que la secuencia completa se imprime a la vez. hacer un pequeño cambio y comprenderá:
putchar(c);
printf("\n");
c = getchar();
Ahora mira en la salida en comparación con el código original.
Otro ejemplo que le explique el concepto de getchar y la entrada estándar tamponada:
void main(){
int c;
printf("Enter character");
c = getchar();
putchar();
c = getchar();
putchar();
}
introducir dos caracteres en el primer caso. La segunda vez que se ejecuta getchar, ¿está ingresando un personaje? NO, pero aún funciona putchar.
Esto en última instancia significa que hay un búfer y cada vez que esté escribiendo algo y haga clic en entrar, esto va y se instala en el búfer. getchar usa este buffer como stdin.
¿No es EOF un valor de char y no un int? –
Creo que es un int cuyo valor es -1. – Shubham
Las cadenas terminan en \ 0.Los archivos son finalizados por EOF que es -1 –