Ecco, con l'input da tastiera è esattamente la stessa cosa. Quando premi Enter viene inserito un newline nello stream; l'unica differenza è che le fread/fgets/... su file devono aspettare il disco prima di restituire i dati, mentre da tastiera devono aspettare l'utente (nello specifico, devono aspettare che l'utente inserisca una riga completa e prema Enter, dato che l'input da tastiera è line-buffered) - in altre parole, è solo questione di tempo di attesa e modalità di buffering.
Quando da tastiera inserisci Ctrl-D (su Linux)/Ctrl-Z (su Windows) seguito da un Enter si tratta semplicemente di una convenzione con il programma che ti mostra la console - la sequenza di tasti Ctrl-D+Enter viene tradotta in una chiusura dello stream, per cui "dall'altro lato" il programma vede che lo stream è terminato.
Infine, lo standard input può benissimo essere un file vero e proprio - è quello che succede quando si redirige l'input (ad esempio da console fai tuoprogramma < input_file.txt); in questo caso puoi tranquillamente incontrare un EOF "vero", indipendentemente dai newline.


Rispondi quotando
