Ho letto nel libro The C Programming Language di Dennis Ritchie che intdeve essere usato per una variabile per contenere EOF - per renderlo sufficientemente grande da poter contenere il valore EOF - no char. Ma il seguente codice funziona bene:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Quando non c'è più input, getcharrestituisce EOF. E nel programma sopra, la variabile c, con tipo di carattere, è in grado di trattenerla correttamente.
Perché funziona? Secondo la spiegazione nel libro sopra menzionato, il codice non dovrebbe funzionare.
0xff. La memorizzazione del risultato di getchar()in intrisolve il problema. La tua domanda è essenzialmente la stessa della domanda 12.1 nelle FAQ di comp.lang.c , che è una risorsa eccellente. (Inoltre, main()dovrebbe essere int main(void), e non farebbe male aggiungere un return 0;prima della chiusura }.)