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