2014-05-24 7 views
5

In Kernighan e Ritchie (il linguaggio di programmazione C):stampa il valore di EOF

'scrivere un programma per stampare il valore di EOF'

ho scritto:

#include <stdio.h> 

main(){ 

    int c; 
    c = getchar(); 
    if ((c = getchar()) == EOF) 
     putchar(c); 
} 

ma non emette nulla Perché?

+4

'EOF' non è un personaggio, quindi' putchar (EOF) 'può fare qualsiasi cosa. Quello che vuoi è 'printf ("% d ", EOF)'. – xfix

risposta

12

La funzione putchar stampa un carattere.

Ma EOF non è un carattere e viene utilizzato per indicare la fine di un file. Quindi il getchar restituisce un valore che è distinguibile dai set di caratteri in modo da indicare che non c'è più input.

Così EOF stampa utilizzando putchar() wont stampare tutti i valori

stampa come numero intero

printf("%d",EOF); 

dà risultato -1

4

provare questo:

#include <stdio.h> 

int main(){ 
    printf("EOF: %d\n", EOF); 
} 

EOF non è un carattere da stampare come previsto.

+5

EOF non è nemmeno un personaggio –

6

putchar significa emettere il carattere che corrisponde a c nella codifica dei caratteri in uso (in genere ASCII). Non c'è un carattere con la codifica EOF (questo è il punto intero di EOF).

"Il valore di EOF" non significa "stampa il carattere il cui codice è EOF".

Un altro esempio: il valore del carattere A è 65; Il tuo compito è stampare l'equivalente di 65 ma per EOF anziché per A. Quindi, putchar non è la strada da percorrere.