La verdad es que en muchos sitios te enseñan a usar el feof y no es que este mal, lo malo es que pensamos que para todo va servir y no es así.
Lo mejor es casi siempre usar los valores de retorno de las funciones como bien comenta aguml.
Créame si te digo que fue hace poco que me entere del mismo XD
Aquí puedes leer algo al respecto, también ver ejemplos de como usar algunas funciones para leer archivos de una forma más eficaz en C/C++:
http://stackoverflow.com/questions/5...s-always-wrong
No me recuerdo quien me paso el enlace este, pero fue en este mismo foro no hace mucho.
Bueno.. Espero que te sirva.