sto facendo funzionare il seguente programma dal C Programming Language libro:getchar() = EOF
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
Quando ho eseguito questo programma, ottengo un comportamento inspiegabile. Se immetto i caratteri dalla riga di comando nella seguente sequenza: {'h', 'e', 'l', 'l', 'o', '\n', '^D'}
, viene visualizzata la seguente risposta sullo schermo: hello
, dopo l'immissione di \n
e il programma si chiude una volta ^D
inserito.
Tuttavia, quando cambio la sequenza nel modo seguente: {'h', 'e', 'l', 'l', 'o', '^D'}
, viene visualizzata la seguente risposta sullo schermo: hello
, ma il programma non si chiude. Non dovrebbe smettere quando entro ^D
? Devo immettere ^D
una seconda volta che il programma si chiude. O il programma si chiude solo dopo aver immesso ^D
dopo \n
. Non capisco perché il programma non si arresti, non importa quando inserisco ^D
. qualche idea?
Sono in esecuzione su un sistema UNIX.
nota che questa è una proprietà del flusso di ingresso del sistema operativo, non del programma C. –
Grazie, Marian e Matt McNabb. Ho pensato che il buffer di input è stato svuotato digitando il carattere di nuova riga. Non ero a conoscenza di un comportamento simile con^D pure. – Nishi