Comencé a leer "The C Programming Language" (K & R) y tengo una duda sobre la función getchar()
.¿Dónde `getchar()` almacena la entrada del usuario?
Por ejemplo este código:
#include <stdio.h>
main()
{
int c;
c = getchar();
putchar(c);
printf("\n");
}
Typing toomanychars
+ CTRL + D (EOF) imprime solo t
. Creo que se espera, ya que es el primer personaje presentado.
Pero entonces esta otra pieza de código:
#include <stdio.h>
main()
{
int c;
while((c = getchar()) != EOF)
putchar(c);
}
Typing toomanychars
+ CTRL + D (EOF) imprime toomanychars
.
Mi pregunta es, ¿por qué sucede esto si solo tengo una sola variable de caracteres? ¿Dónde están almacenados el resto de los personajes?
EDIT:
Gracias a todos por las respuestas, comienzo a ahora ... Sólo una pega:
Las primeras salidas del programa cuando se administra CTRL +D mientras el segundo imprime toda la cadena y luego espera a que el usuario ingrese más. ¿Por qué espera otra cadena y no sale como la primera?
Su segundo enfoque simplemente se repite hasta EOF. CTRL + D (en sistemas típicos de Unix) no dará como resultado EOF a menos que lo golpee en una línea propia. Presionar CTRL + D después de haber escrito un carácter no resulta en EOF – nos