Verifier l'existance d'1 fichier en C

Résolu
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

--
The challenge is so hard but it can makes from our life an eternal spring ...
Configuration: Linux
Firefox 3.5.6

5 réponses

  1. 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
    1. Contributeur
      Pas forcément. Cela peut vouloir dire qu'il n'a pas les droits de lecture sur le fichier (entre autres).
      0
  2. Contributeur
    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
    1. 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
      1. Contributeur
        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
        1. 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
        2. Contributeur
          @asma sisidonc 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
        3. @fiddysi 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
        4. Contributeur
          @asma sisidonc 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
        5. @fiddyje 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
      2. @
        The challenge is so hard but it can makes from our life an eternal spring ...
        0