"Как указано выше, обнаружив конец файла, функция getc() возвращает константу EOF. Однако это не самый лучший способ распознавания конца файла. Во-первых, операционная система может работать как с текстовыми, так и с бинарными файлами. Если файл открыт для бинарного ввода, из него может быть считано целое число, равное константе EOF. Следовательно, конец файла, распознаваемый функцией getc(), может не совпадать с реальным концом файла."
Я, наверное, чего-то не понимаю. Как можно считать из файла байт со значением EOF?
Про знаковое расширение у signed char я знаю, но если оно срабатывает на байтах, читаемых из файла, то это тяжелая проблема билиотеки, подлежащая срочному лечению.
Так о чём это он?
Я, наверное, чего-то не понимаю. Как можно считать из файла байт со значением EOF?
Про знаковое расширение у signed char я знаю, но если оно срабатывает на байтах, читаемых из файла, то это тяжелая проблема билиотеки, подлежащая срочному лечению.
Так о чём это он?
Tags:
А посмотреть stdio.h ???
int getc(FILE *stream);
Именно int, а не char!
Соответственно, прочитать байт 0x1A (что было актуально в DOS) можно, но обрабатывать его именно как EOF никто не заставляет - точно так же, как /bin/sh завершает работу не при чтении символа ^D (0x04), а при получении SIGHUP
Re: А посмотреть stdio.h ???
В приведенном отрывке, конечно, написана ерунда. Не знаю уж, кто виноват, автор или переводчик.