November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Monday, October 11th, 2004 12:17 pm
"Как указано выше, обнаружив конец файла, функция getc() возвращает константу EOF. Однако это не самый лучший способ распознавания конца файла. Во-первых, операционная система может работать как с текстовыми, так и с бинарными файлами. Если файл открыт для бинарного ввода, из него может быть считано целое число, равное константе EOF. Следовательно, конец файла, распознаваемый функцией getc(), может не совпадать с реальным концом файла."

Я, наверное, чего-то не понимаю. Как можно считать из файла байт со значением EOF?
Про знаковое расширение у signed char я знаю, но если оно срабатывает на байтах, читаемых из файла, то это тяжелая проблема билиотеки, подлежащая срочному лечению.
Так о чём это он?
Monday, October 11th, 2004 02:08 am (UTC)
The fgetc() function obtains the next byte (if present) as an unsigned char converted to an int, from the input stream pointed to by stream, and advances the associated file position indicator for the stream (if defined).

The fgetc() function may mark the st_atime field of the file associated with stream for update. The st_atime field will be marked for update by the first successful execution of fgetc(), fgets(), fgetwc(), fgetws(), fread(), fscanf(), getc(), getchar(), gets() or scanf() using stream that returns data not supplied by a prior call to ungetc() or ungetwc().

from http://www.livejournal.com/users/dil/49773.html?mode=reply

Возможно, кстати, что он о том некорректном использовании, когда пишут

char c;
c= getc();
Monday, October 11th, 2004 02:09 am (UTC)
Урло не то запостилось.

http://www.opengroup.org/onlinepubs/007908799/xsh/fgetc.html