C++ : lecture de dossiers (dirent.h)
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

C++ : lecture de dossiers (dirent.h)



  1. #1
    invite88ef51f0

    C++ : lecture de dossiers (dirent.h)


    ------

    Salut tout le monde,
    Je cherche à faire un programme donnant la liste des sous-répertoires d'un répertoire donné, et j'ai un petit souci... Voici mon code :

    Code:
    #include <iostream>
    #include <dirent.h>
    #include <sys/types.h>
    
    int main(void)
    {DIR* toto=opendir("/home/");
    
     struct dirent* titi;
     char* nomfichier;
     for(titi=readdir(toto);titi!=NULL;titi=readdir(toto))
       { nomfichier=titi->d_name;
       if(titi->d_type==DT_DIR) {cout << nomfichier<< "\n";};
       }
    
     return 0;}
    Le problème, c'est qu'il ne me retourne rien car apparemment quelque soit l'élément lu, il le reconnaît de type "unknown".

    Bref, y a quelque chose qui m'échappe.

    Merci à ceux qui pourront m'aider

    -----

  2. #2
    inviteb271042d

    Re : C++ : lecture de dossiers (dirent.h)

    Citation Envoyé par Coincoin
    ... Voici mon code :

    Code:
    ...;
     for(titi=readdir(toto);titi!=NULL;titi=readdir(toto))
      
    
       return 0;}
    Bonjour,
    Tes variables ne sont pas initialisées par defaut,
    Tu ne testes pas si l'opendir s'est correctement passé,et le plus simple pour débugguer serait de ne pas utiliser les fonctions d'accès au repertoire directement dans l'ordre for mais plutot au sein des accolades de la boucle :

    Code:
    {
    // Variables globales 
       DIR* toto= NULL;
       struct dirent* titi=NULL;
       char* nomfichier=NULL;
    
    // Accès au repertoire
    
        DIR=opendir("/home/");
    // Si succès, parcours du repertoire :
        if( DIR != NULL ) {
           titi=readdir(toto);
           if ( titi == NULL )
            { printf("Erreur acces fichier );
               exit() ;
            }
           else 
           while ( titi != NULL )
            {
             nomfichier=titi->d_name;
             if(titi->d_type==DT_DIR) {cout << nomfichier<< "\n";};
             titi=readdir(toto);
            } //fin du while de parcours du repertoire
           }  // test if DIR != NULL
            else {
    // cf la doc de dirent.h pour les codes retour d'erreur
               printf( "erreur d'acces au repertoire" );
            }
          } 
        
     return 0;}
    Bon courage ; verifie le nombre d'accolades fermantes car mon code est tapé vite fait sous l'éditeur du forum sans vérification dans un IDE.

  3. #3
    inviteb271042d

    Re : C++ : lecture de dossiers (dirent.h)

    Question beta : as tu les droits pour parcourir /home ?

Discussions similaires

  1. les dossiers
    Par inviteee059057 dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 14/12/2006, 18h04
  2. sauvegarde de dossiers
    Par invite5e1fe0a8 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 09/08/2006, 18h31
  3. Réponses: 2
    Dernier message: 27/07/2005, 09h44
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...