pas le premier: feof est mal utilisé, ca ne fonctionnera pas. le fait d'utiliser un float va tout perturber. l'epsilon float n'est pas egal à l'int 1, donc le pas n'est pas valide. fread, pourquoi aps fgetc? le resultat variera selon que le fichier est binaire ou texte.
la deuxieme solution est un peut mieux: mais il vaudrait mieux sauvegarder le pointeur puis le restaurer afin de ne pas perdre la position courante. voir fgetpos/fsetpos
le mieux est de se tourner vers son systeme. *stat marchent au poil