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 :

opendir()


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut opendir()
    Je voudrais savoir si dans un opendir, il faut passer simplement le nom du répertoire à ouvrir ou faut il lui passer le chemin+nom du repertoire?

    Merci

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par theshark85
    Je voudrais savoir si dans un opendir, il faut passer simplement le nom du répertoire à ouvrir ou faut il lui passer le chemin+nom du repertoire?

    Merci

    Il faut tout lui donner par exemple
    opendir("/usr/share/doc");

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Oki merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Ben j'ai pas du comprendre un truc.
    Je veux tester si le répertoire existe, si c'est le cas, j'en cree un nouveau avec un autre nom, et s'il existe pas on le cree.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    DIR *dirlog;
     
    /*recherche d'existance*/
       for(i=0;dirlog!=NULL;i++)
       { 
        sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
        dirlog=opendir(PATH_LOG);
        i++;
       }
     
    /*test bidon*/
        if(dirlog!=NULL)
            printf("Fichier existant\n");
        else
             printf("Fichier inexistant\n");
     
    /*Creation du repertoire*/
        sprintf(PATH_LOG,"mkdir \"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
        system(PATH_LOG);
     
    /*creation du chemin du log*/    
        sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
        printf("PATH_LOG  =>%s\n",PATH_LOG);
    Mon probléme, la boucle de recherche ne fonctionne pas. Si j'ai des déjà le répertoire de crée, elle le réecrase quand meme.

  5. #5
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 787
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 787
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /*recherche d'existance*/
       for(i=0;dirlog!=NULL;i++)
       { 
        sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
        dirlog=opendir(PATH_LOG);
        i++;
       }
    Ca, pour commencer, c'est un FOR génétiquement modifié... soit tu fais un FOR et dans ce tu ne géres pas le compteur de boucle dans le bloc d'instructions.

    Soit tu fais un "while" et dans ce cas tu peux gérer un compteur.

    ici i est incrémenté 2 fois ... for(; ;i++)
    et i++;}




    ... ensuite dans le IF, la 2ème condition est la condition de sortie. Ici, ton if ne sort que ... quand

    Du coup dans "test bidon"

    est toujours faux, et tu passes toujours dans le ELSE... donc tu écrases tout le temps.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Mais son des test bidon, qui ne doivent avoir aucune utilite que pour savoir ce que ça fait pour moi meme.

    Ce que je veux, c'ets que quand ça de la recherche j'ai le nouveau i, qui est la nouvelle evrsion du repertoire.


    J'avais pas vu en postant que j'avais oublie le Car j'ai aussi essayé avec un do while, et pareil, meme comportement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DIR *dirlog;
       i=0;
       do
       { 
        sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
        dirlog=opendir(PATH_LOG);
        i++;
       }
       while(dirlog!=NULL);
    Et sinon pour mon for, je sais qu'il etai genetiquement modifie. Mais bon ça fait un petit moment que je me prend la tete dessus, et doit y avoir un truc qui m'échappe.

  7. #7
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Mon probléme, la boucle de recherche ne fonctionne pas. Si j'ai des déjà le répertoire de crée, elle le réecrase quand meme.
    Sans savoir ce qu'il y a dans PATH_MAIN, c'est difficile de donner un diagnostic. Fait un printf de ta commande mkdir et regarde si la commande colle.

    Sinon, tu va avoir un problème d'indice puisque ta boucle incrémente i après avoir tester un répertoire donc lorsque tu sors de la boucle, i a été incrémenté une fois de trop...

    Il faudrait faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DIR *dirlog;
       i=-1;
       do
       { 
        i++;
        sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
        dirlog=opendir(PATH_LOG);
       }
       while(dirlog!=NULL);
    Jc

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Merci mon probléme étant que mon i++; n'était pas bien placé. Comme l'avais dit il y avait un truc qui m'échappait
    Voici mon code résolu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
       DIR *dirlog;
     
       i=-1;
       do
       {
        i++;
        sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
        dirlog=opendir(PATH_LOG);
       }
       while(dirlog!=NULL);
     
       sprintf(PATH_LOG,"mkdir \"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
       system(PATH_LOG);
     
       sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]);
       printf("PATH_LOG  =>%s\n",PATH_LOG);
    PATH_MAIN étant le chemin principal
    PATH_LOG le chemin du repertoire

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

Discussions similaires

  1. [intermédiaire][TOpenDialog] conflit avec opendir
    Par thecaptain dans le forum C++Builder
    Réponses: 9
    Dernier message: 21/12/2005, 02h50
  2. Images random vs opendir
    Par Pleymo dans le forum Langage
    Réponses: 3
    Dernier message: 23/11/2005, 08h37
  3. Opendir + accès réseau local
    Par Lucier dans le forum Langage
    Réponses: 4
    Dernier message: 16/11/2005, 11h58
  4. pb opendir sur repertoire sur serveur distant
    Par nanou40 dans le forum Langage
    Réponses: 22
    Dernier message: 10/10/2005, 15h45
  5. [Sécurité] probleme d'acces en reseau local avec OPENDIR()
    Par babycracker dans le forum Langage
    Réponses: 3
    Dernier message: 28/09/2005, 13h51

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