blurk a écrit :
Ouais je me suis trompé fgets ne renvoie pas EOF... Dans ce cas il faut utiliser feof (), qui ne renvoie pas EOF non plus mais une valeur non nulle en fin de fichier.
|
Non. Il faut utiliser la valeur retournée par fgets(). Si c'est NULL, c'est que la lecture a été interrompue. Le plus souvent, cette information suffit.
while (fgets(...) != NULL)
{
}
|
Si on tient à en connaitre la cause, on utilise feof() et ferror() pour lever le doute entre fin de fichier (EOF) et erreur systeme (effacement, lock ...). Les valeurs retournées par ces fonctions ne sont valides que si la fin de lecture a été detectée.
while (fgets(..., fp) != NULL)
{
}
/* apres coup uniquement... */
if (ferror (fp))
{
/* erreur de lecture */
perror ("nom du fichier" );
}
else if (feof (fp))
{
/* fin normale du fichier */
}
else
{
/* cause inconnue */
}
|
http://mapage.noos.fr/emdel/notes.htm#fichiers
Message édité par Emmanuel Delahaye le 08-01-2005 à 18:07:42
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/