Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tester fichier vide ou non

5 réponses
Avatar
jaoued nasri
Bonjour,

J'ai un fichier qui est g=E9n=E9r=E9 dans le programme. Ce fichier peut =EA=
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=E8re).

Lorsque je lance l'ex=E9cution alors j'ai une exception
Je fais le d=E9bogage alors j'ai localis=E9 l'erreur est quand le fichier
est vide alors le programme ne peut pas ex=E9cuter l'instruction
suivante:

<code type=3D"c">
........
.........
while (fgets(sLine, MAXLINE, fp))
{
sscanf(sLine,"%d%s",&obj,att);

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

</code>

Que proposez vous ?

Merci.

5 réponses

Avatar
Christian ASTOR
On 28 sep, 14:27, jaoued nasri wrote:

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.



Déjà répondu ...
http://tinyurl.com/yayapxh
Avatar
programmation
> Déjà répondu ...http://tinyurl.com/yayapxh



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:

Voici une partie de code:

#define MAX 1024
int main()
{
FILE *fp;
char sLine[MAX], att[32];
int obj;

fp = fopen("exemple.txt","r");

if(fp== NULL)
exit(0);

// il faut faire un test ici .... ?

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

...........
.........
}
.......
return 0;

}


Je n'arrive pas à adapter la fonction stat.st_size dans man cas ?

Pouvez vous poser la solution ?

Merci.
Avatar
Jean-Claude BELLAMY
"jaoued nasri" a écrit dans le message de groupe de
discussion :

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



Fonction GetFileSizezEx, tout simplement !

The GetFileSizeEx function retrieves the size of a specified file.


BOOL GetFileSizeEx(
HANDLE hFile,
PLARGE_INTEGER lpFileSize
);

Parameters
hFile
[in] Handle to the file whose size is to be returned. The handle must have
been created with either the GENERIC_READ or GENERIC_WRITE access right. For
more information, see File Security and Access Rights.
lpFileSize
[out] Pointer to a LARGE_INTEGER structure that receives the file size.
Return Values

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Avatar
programmation
On 28 sep, 15:56, "Jean-Claude BELLAMY" <Jean-
wrote:
"jaoued nasri" a écrit dans le message de groupe de
discussion :


> 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

Fonction GetFileSizezEx, tout simplement !

The GetFileSizeEx function retrieves the size of a specified file.

BOOL GetFileSizeEx(
  HANDLE hFile,
  PLARGE_INTEGER lpFileSize
);

Parameters
hFile
[in] Handle to the file whose size is to be returned. The handle must hav e
been created with either the GENERIC_READ or GENERIC_WRITE access right. For
more information, see File Security and Access Rights.
lpFileSize
[out] Pointer to a LARGE_INTEGER structure that receives the file size.
Return Values

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]http://www.bellamyjc.org ouhttp://jc.bellamy.f ree.fr





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=%sn",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.
Avatar
Jean-Claude BELLAMY
"programmation" a écrit dans le message de groupe de
discussion :

On 28 sep, 15:56, "Jean-Claude BELLAMY" <Jean-
wrote:
"jaoued nasri" a écrit dans le message de groupe de
discussion :


> 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

Fonction GetFileSizezEx, tout simplement !

The GetFileSizeEx function retrieves the size of a specified file.

BOOL GetFileSizeEx(
HANDLE hFile,
PLARGE_INTEGER lpFileSize
);







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=%sn",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.


??????????????

Teste la taille du fichier (avec GetFileSizeEx), et si tu trouves zéro tu
sautes la boucle!


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr