2014-05-24 17 views
5

In Kernighan und Ritchie (die Programmiersprache C):den Wert von EOF Drucken

'Schreiben Sie ein Programm den Wert von EOF drucken'

schrieb ich:

#include <stdio.h> 

main(){ 

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

aber es gibt nichts aus Warum?

+4

'EOF' kein Zeichen ist daher' putchar (EOF) 'kann alles tun. Was Sie wollen, ist 'printf ("% d ", EOF)'. – xfix

Antwort

12

putchar Funktion druckt ein Zeichen.

Aber EOF ist kein Zeichen und wird verwendet, um das Ende einer Datei anzuzeigen. Also gibt getchar einen Wert zurück, der von den Zeichensätzen unterscheidbar ist, um anzuzeigen, dass keine Eingabe mehr erfolgt.

So EOF Drucken mit putchar() wird nicht

printf("%d",EOF); 

gibt Ergebnis als integer

Druck beliebige Werte drucken -1

4

versuchen Sie dies:

#include <stdio.h> 

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

EOF kein druckbare Zeichen ist wie erwartet.

+5

EOF ist nicht einmal ein Zeichen –

6

putchar bedeutet, dass das Zeichen ausgegeben wird, das c in der verwendeten Zeichencodierung (normalerweise ASCII) entspricht. Es gibt kein Zeichen mit der Kodierung EOF (das ist der ganze Sinn von EOF).

"Der Wert von EOF" bedeutet nicht "drucken Sie das Zeichen, dessen Code EOF ist".

Ein anderes Beispiel: der Wert des Zeichens A ist 65; Ihre Aufgabe ist es, das Äquivalent von 65 aber für EOF statt für A zu drucken. Also, putchar ist nicht der richtige Weg.