Tester fichier vide ou non

boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 28 sept. 2009 à 14:25
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 29 sept. 2009 à 16:22
Bonjour,

J'ai un fichier qui est généré dans le programme. Ce fichier peut être vide ou non.
Je voulais tester si le fichier est vide ou non
si le fichier est non vide alors je vais lire de ce fichier et faire des traitements si non rien faire.

Ce fichier contient deux champs: un numero (entier) et une valeur( chaine de caractère).

Lorsque je lance l'exécution alors j'ai une exception
Je fais le débogage alors j'ai localisé l'erreur est quand le fichier est vide alors le programme ne peut pas exécuter l'instruction suivante:

........
.........
while (fgets(sLine, MAXLINE, fp))
    {
sscanf(sLine,"%d%s",&obj,att);

.............


Que proposez vous ?

Merci.

4 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
28 sept. 2009 à 17:18
Peut-etre avec fseek et SEEK_END
Puis ftell.

A vérifier, je ne sais pas ce que fait fseek si le fichier est vide.

ne pas oublier fseek SEEK_SET, pour revenir au début, après. :)
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
28 sept. 2009 à 18:10
j'ai fait le test suivant mais en cas de fichier vide le programme génère une exception :

 while (fgets(sLine, MAXLINE, pFTrie)!=NULL)
    {
sscanf(sLine,"%d%s",&objet,attribut);
printf("objet=%d attr=%s\n",objet,attribut);
}


Je ne sais pourquoi le programme entre dans la boucle 'while' même si le fichier est vide ?

Je n'arrive pas à résoudre ce problème.

Pouvez vous poser le code source de la solution à ce problème ?

Merci.
0
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
29 sept. 2009 à 00:16
Bonjour,

Est-tu certain que ton fichier est vide, c'est à dire que sa taille est de 0 octets ?

S'il n'est pas vide, peut-être contient-il seulement un ou plusieurs saut de ligne, ce qui explique que le fgets() passe mais pas le sscanf.
0
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
29 sept. 2009 à 16:22
Salut les amis, bon il faut accepter d'éviter de créer 50 topics (sujet original). Ton appel de scanf() n'est pas correct, je t'ai mis le code du printf() exprès, pensant que tu pu t'en inspirer ..
0
Rejoignez-nous