Verifier l'existance d'1 fichier en C

Résolu/Fermé
asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011 - 1 janv. 2010 à 22:49
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 2 janv. 2010 à 12:37
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
A voir également:

5 réponses

Utilisateur anonyme
1 janv. 2010 à 22:56
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.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
1 janv. 2010 à 23:04
Pas forcément. Cela peut vouloir dire qu'il n'a pas les droits de lecture sur le fichier (entre autres).
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
1 janv. 2010 à 23:14
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,
0
asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011 20
1 janv. 2010 à 23:56
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 .
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 janv. 2010 à 00:11
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,
0
asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011 20
2 janv. 2010 à 00:25
ok merci fiddy pour les corrections
clairement j'ai un projet de construction d'un mini-compilateur du langage C , en utilisant LEX et YACC .
a la détection des erreurs je veut se rassurer si la (les) librairies incluses existent ,sinon j'affiche une erreur disant que cette bibliothèque n'existe pas . ces bibliothèques sont stocké (je croix..mais pas sur) dans un dossier dont l'adresse est indiqué dans la variable d'environnement path.
donc si je trouve une fonction qui me cherche ce fichier.h dans ce répertoire, je pourrai savoir si cette bib existe ou non
merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011
2 janv. 2010 à 00:39
donc si je trouve une fonction qui me cherche ce fichier.h dans ce répertoire, je pourrai savoir si cette bib existe ou non
Attention à ne pas confondre bibliothèque (.lib ou .a) et son header (.h). Deux choses différentes.

ces bibliothèques sont stocké (je croix..mais pas sur) dans un dossier dont l'adresse est indiqué dans la variable d'environnement path.
Non. La variable PATH contient la liste des répertoires à parcourir pour lancer une commande.
Pour vérifier l'existence des bibliothèques et des headers, il s'agit des variables définies par ton compilateur et non par le système. Donc en gros, si ton projet c'est un mini-compilateur, c'est à toi de gérer les répertoires à tester par défaut (quitte à pouvoir le changer via une option).
0
asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011 20 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
2 janv. 2010 à 00:49
si ton projet c'est un mini-compilateur, c'est à toi de gérer les répertoires à tester par défaut
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 , ce qui repose ma première question ..non??
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011
2 janv. 2010 à 10:18
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.
0
asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011 20 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
2 janv. 2010 à 10:35
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
asma sisi Messages postés 96 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 23 mars 2011 20
Modifié par asma sisi le 29/03/2010 à 01:14
@
The challenge is so hard but it can makes from our life an eternal spring ...
0