Печать значения EOF

в Kernighan и Ritchie (язык программирования C):

'напишите программу для печати значения EOF'

я писал:

#include <stdio.h>

main(){

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

но он ничего не выводит, почему?

3 ответов


функция putchar печатает символ.

но EOF не является символом и используется для указания конца файла. Таким образом, getchar возвращает значение, которое отличается от наборов символов, чтобы указать, что больше нет ввода.

поэтому печать EOF с помощью putchar () не будет печатать никаких значений

печатать его как целое число

printf("%d",EOF);

дает результат -1


putchar означает вывод символа, который соответствует c в используемой кодировке символов (обычно ASCII). Нет символа с кодировкой EOF (в этом весь смысл EOF).

"значение EOF" не означает " печать символа, код которого EOF".

другой пример: значение символов A - 65; ваша задача-напечатать эквивалент 65 но EOF, а не A. Итак,putchar так не пойдет.


попробуйте это:

#include <stdio.h>

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

EOF не является печатаемым символом, как вы ожидали.