Lenguaje de programación K&R C 1.5.1 (Copia de archivos)

Bueno, hace algunos meses leí otro libro C "bien conocido" (en mi idioma), y nunca aprendí nada sobre esto. La forma en que K&R escribe 3 capítulos en 20 páginas es simplemente increíble, y por supuesto que no puedo esperar grandes explicaciones, pero eso también plantea preguntas.

Tengo una pregunta sobre este punto 1.5.1 El libro dice (pág. 16):

main(){
  int c;// <-- Here is the question
  c=getchar();
  while (c != EOF){
    putchar(c);
    c = getchar();
  }
}

[...] El tipo char está destinado específicamente para almacenar dichos datos de caracteres, pero se puede usar cualquier tipo de entero. Usamos int por una razón sutil pero importante. El problema es distinguir el final de la entrada de datos válidos. La solución es que getchar devuelve un valor distintivo cuando no hay más entrada, un valor que no se puede confundir con ningún carácter real. Este valor se llama EOF, para "fin de archivo". Debemos declarar que c es un tipo lo suficientemente grande como para contener cualquier valor que devuelva getchar. No podemos usar char ya que c debe ser lo suficientemente grande como para contener EOF además de cualquier char posible. Por lo tanto usamos int. [...]

Después de buscar en google por otra explicación:

EOF es una macro especial que representa Fin de archivo (Linux: use CTRL + d en el teclado para crear esto, comando de Windows: use CTRL + z (puede que tenga que estar al principio de la nueva línea, seguido de RETURN)): A menudo EOF = -1, pero depende de la implementación. Debe ser un valor que no sea un valor válido para cualquier carácter posible. Por esta razón, c es de tipo int (no es un char como podría esperarse).

Así que modifiqué la fuente de int a char para ver cuál es el problema, sobre tomar valores EOF ... pero no hay problema. Funciona de la misma manera.

Tampoco me di cuenta de cómo getchar toma todos los caracteres que escribo e imprime todo. El tipo Int es de 4 bytes, por lo que puede tomar 4 caracteres dentro de una variable. Pero puedo poner cualquier número de caracteres, leerá y escribirá todo de la misma manera. Y con la char, pasa lo mismo ... ¿Qué pasa realmente? ¿Dónde se almacenan los valores cuando hay más de 1-4 caracteres?

Respuestas a la pregunta(3)

Su respuesta a la pregunta