>>894
feofはファイルの終端を越えて読み出しを行った場合にゼロ以外を返す。
なので、最後の一文字を読んだ時点ではまだゼロ。
他の言語じゃ終端でEOFになるのが多いから間違えやすい。

ファイルシステムがファイルの長さの情報を持ってるから不要。
むかしCP/MというOSがファイルの長さの情報をブロック単位でしか持っていなかったので
テキストファイルの場合終端に ^Z(0x1a)を付けていたことがあるがこれは例外。
MS-DOSにもこの風習が残っていた。