Verifier l'existance d'1 fichier en C

[Résolu/Fermé]
Signaler
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
Bonjour,
j'aimerai savoir s'il existe une fonction en langage C qui permet de vérifier l'existence d'un fichier dans un répertoire donnée .
merci

5 réponses


Bonjour,

Tu peux utiliser la fonction fopen(), et si le pointeur sur ton fichier vaut toujours NULL après son appel, alors ton fichier n'existe pas.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 785
Pas forcément. Cela peut vouloir dire qu'il n'a pas les droits de lecture sur le fichier (entre autres).
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 785
Salut,
En C, il n'existe aucun moyen standard de vérifier l'existence d'un fichier.
Sous windows, tu peux comparer errno avec ENOENT si fopen(file,"r") à échouer.

Cdlt,
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011
18
salut,
merci pour vos réponses mais en réalité , ce que je voulais est de chercher l'existence d'un fichier dans la variable d'environnement path ce qui veut dire dans un endroit précis ,hors que fopen peut chercher seulement dans le répertoire courant .
je précise que mon projet doit être sous LINUX et non pas windows .
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 785
fichier dans la variable d'environnement path ce qui veut dire dans un endroit précis
Dans path, il n'y a que des répertoires, et non des fichiers.

fopen peut chercher seulement dans le répertoire courant .
Pas du tout. Tu peux indiquer le chemin absolu dans fopen. Par exemple : fopen("/home/toto/fichier","r");

Peux-tu donner un exemple plus concret de ce que tu veux ?

Cdlt,
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 785 >
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011

donc si j'ai bien compris il est toujours indispensable de tester l'existence des headers dans le répertoire par défaut que je doit gérer
Oui ton compilateur doit avertir l'utilisateur en cas de non-existence du fichier. Le répertoire de recherche par défaut est à gérer par ton programme.
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011
18 >
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016

je suis d'accord que c'est moi qui doit indiquer le répertoire de recherche par défaut mais avez vous une idée sur :comment faire la recherche proprement dite dans ce répertoire.
le mini-compilateur est déjà implémenté par un programme LEX où est ce que le le parcours des données du programme a compiler (analyse lexicale syntaxique et sémantique , y compris le teste de l'existence du header)se fait en C , c'est pour cela que je cherche une fonction en C.
merci
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 785 >
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011

Comme dit au début, la fonction fopen...
Il n'y a pas que l'existence que tu dois vérifier, mais est-ce que tu as les droits d'ouvrir le fichier, etc.
Au final, tu ouvres le fichier avec fopen en mode "r". Si ça ne retourne pas NULL, c'est que le fichier existe, que ton programme a les droits suffisants etc.
En plus, faudra bien lire les fichiers header, puisque tu devras copier tous leurs contenus en en-tête de ton fichier source avant de passer à la compilation à proprement parler.
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011
18 >
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016

merci pour la réponse feddy, c'est mieux clair maintenant pour le test du fichier.
Mais En plus, faudra bien lire les fichiers header, puisque tu devras copier tous leurs contenus en en-tête de ton fichier source avant de passer à la compilation à proprement parler.
j'arrive pas a saisir , pouvez vous m'éclaircir ce que vous voulez dire par "tu devra copier tout leur contenu en en-tête dans ton code source".
si vous pouvez me donner un doc (un lien) qui explique la gestion des headers en C , je vous en serai reconnaissante , j'ai cherché mais j'ai pas trouvé grand chose
merci d'avance
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 785 >
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011

La compilation s'effectue en plusieurs étapes.
Avant de compiler, le compilateur va exécuter toutes les instructions préprocesseurs comme les #include.
Pour chaque #include, il ira chercher le fichier et remplacera le #include par l'intégralité du fichier correspondant sans se poser de questions. D'ailleurs si tu fais gcc -E, tu observeras qu'il n'y a plus d'instructions préprocesseurs.
Messages postés
96
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
23 mars 2011
18
@
The challenge is so hard but it can makes from our life an eternal spring ...