ignoble.
utilise les ifstream en binaire et voilà
http://cplusplus.com/ref/iostream/istream/read.html
le problèem c'est de toutes façons eof. eof ne dit pas si on est à la fin du fichier, mais si la dernière lecture a échouée à cause de eof.
donc on analyse ton programme
while(!eof) - ok, ça passe, le fichier vient d'etre ouvert
read - ok, on a lu le premier, le pointeur est en fin de fichier
while(!eof) - ok, on est en fin de fichier __mais__ aucune lecture infructueuse n'a été effectuée
read - échoue ... le contenu de tCD est le même que le dernier enregistrement puisqu'il n'est pas relu
while(!eof - voilà, ça termine
en bon programme ressemblera à
while(fichier.read(...))
{
// traitement
}