従って、「読み込んでからeof()で調べてみて、okだったらやりたいことをやる」
という順序が正解ですな。

たとえば、条件文のところをwhile (1)にした上で、ifile.read()の直後にeof()をチェックして
真だったらbreakするとか、
条件文の中に読み込む式とeof()をカンマで並べるとか。