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 :

Probleme de readdir


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Par défaut Probleme de readdir
    Bonjour, j'ai fais un programme qui me liste tous les fichiers d'un répertoire
    Bien sur, si dans ce répertoire, il y a un autre répertoire, on l'affiche

    Voila un exemple :
    Ouverture repertoire "/cpp"
    fichier1
    fichier2
    [...]
    repertoire : projets_sdz
    //affichage du repretoir projets_sdz
    [...]

    Tout marche sauf que voila mon probleme :

    Je recupere le nom du repertoire dans : lecture->d_name.
    je veux opendir le repertoire lecture->d_name.
    je peux pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open=opendir(lecture->dir_name);
    Car il faut un slash avant lecture->d_name !!
    je peux pas faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open=opendir("/"lecture->dir_name);

    Alors comment je fais ?

  2. #2
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Salut et bienvenue sur les forums de Developpez

    Ce que tu cherches à faire c'est concaténer (coller) deux chaines de caractères. Ca se fait avec la fonction strcat().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcat(char *destination, char *ajout);
    Attention : la chaine destination doit être suffisament grande pour contenir la chaine ajout à la suite.
    Donc ce que tu peux faire c'est créer une chaine ne contenant que le slash au départ mais suffisament grande pour contenir aussi le nom. Puis tu ajoutes ton chemin. Une autre solution serait de passer par une allocation dynamique pour avoir la taille pile mais bon ...

    Nas'

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Par défaut
    Oui j'y ai réfléchi mais lecture->d_name n'est pas une string

  4. #4
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Si, lecture->dname est un char* donc une chaine de caractère.
    http://c.developpez.com/faq/c/?page=...dir_list_POSIX

    Nas'

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Par défaut
    Donc je fais :

    strcat(lecture->d_name, "/");

    ?

    Ca marche mais le / est a la fin :s

  6. #6
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Citation Envoyé par man
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char *strcat(char *dest, const char *src);
    strcat porte mal son nom... ca devrait plutot etre strappend().

    En fait elle ajoute la chaine src a la chaine dst.

    Note: La chaine dst doit etre assez grande pour supporter l'ajout.

    Donc il faut que tu alloue une chaine de la taille necessaire, a savoir strlen(lecture->d_name + 2) (=> +1 pour le '/', +1 pour le '\0') que tu mettes le '/' au debut puis que tu appelles strcat pour rajouter lecture->d_name a la fin.

    Bonne chance.

  7. #7
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Citation Envoyé par lapras123
    Oui j'y ai réfléchi mais lecture->d_name n'est pas une string
    Ah bon ? Etrange....

    Citation Envoyé par man readdir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       struct dirent {
                  ino_t          d_ino;       /* inode number */
                  off_t          d_off;       /* offset to the next dirent */
                  unsigned short d_reclen;    /* length of this record */
                  unsigned char  d_type;      /* type of file */
                  char           d_name[256]; /* filename */
              };
    Apparement c'est bien une chaine. Ou plutot un tableau de char.

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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