Печать значения 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 не является печатаемым символом, как вы ожидали.
