IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Récupération du chemin d'un fichier


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2018
    Messages : 43
    Points : 36
    Points
    36
    Par défaut Récupération du chemin d'un fichier
    Bonjour,

    J'arrive à ouvrir un fichier avec fopen("/opt/symmetric-server-3.12.11/samples/test.properties") sans problème
    en revanche afin de pouvoir gérer les évolutions de versions de symmetric, je souhaiterais faire
    fopen("/opt/symmetric-server-*/samples/test.properties")

    cet appel fonctionne sous linux mais pas en C
    Merci pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Bonjour,

    ça ne fonctionne pas sous «linux» mais avec le shell. C'est le shell qui gère le wildcard *.
    En C il va falloir d'abord chercher les répertoires qui correspondent à ta pattern, puis parmi ceux-là sélectionner le bon puis ouvrir ton fichier.

    Après suivant les bibliothèques utilisées ce sera plus ou moins simple. Par exemple sur une plateforme avec la gnu libc, tu as à ta disposition la fonction fnmatch qui permet d'utiliser une syntaxe qui est celle de base des shells unix. En posix tu as également la fonction glob.

    Une façon plus unixienne de faire serait de toujours disposer d'un link du répertoire ayant toujours le même nom et pointant sur la version courante de symmetric; ou alors de paramétrer ton programme avec un fichier de conf. Cela permet une maintenance plus aisée.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2018
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Merci pour ton retour, j'ai réussi avec glob

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int main()
    {
        glob_t buf;
    	glob("/opt/symmetric-server-*/samples/test.properties", GLOB_NOSORT, NULL, &buf);
     
    	char* filename = buf.gl_pathv[0];
    	printf("buf %s\n", filename);
     
    	globfree(&buf);
     
        return 0;
    }

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par tduverger Voir le message
    en revanche afin de pouvoir gérer les évolutions de versions de symmetric, je souhaiterais faire
    fopen("/opt/symmetric-server-*/samples/test.properties")
    j'ai réussi avec glob
    Et comment est présumé se comporter ton programme si le dossier "/opt" contient plusieurs versions parallèles de "symmetric-server" comme c'est souvent le cas ?

    WhiteCrow a parlé de fichier de conf ce qui est pas mal ou de link qui est aussi une bonne idée et qui seront plus robustes que de passer par un truc qui peut potentiellement partir en torche si ton arborescence se met à évoluer plus vite que prévu.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de récupération de chemin d'un fichier en JSP
    Par philou44300 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 23/08/2013, 16h21
  2. Réponses: 6
    Dernier message: 13/08/2013, 13h46
  3. Récupération du chemin d'un fichier(drag and drop)
    Par Thomas423 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/03/2013, 16h13
  4. Réponses: 7
    Dernier message: 25/05/2008, 14h02
  5. Récupération complette du chemin d'un fichier
    Par sebac dans le forum Access
    Réponses: 7
    Dernier message: 22/05/2007, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo