Bonjour,

Dans une appli, j'ai besoin de parcourir des dossiers. J'ai donc suivi un tutoriel C++. J'ai cependant un problème : j'ai besoin de parcourir les sous-répertoires d'un répertoire père. J'ai donc fait une fonction itérative :
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
 
void analyseDossier(DIR* rep, char* chemin)
{
    struct dirent* fichierLu;
    while ((fichierLu = readdir(rep)) != NULL)
    {
        cout << "\nFichier lu : " << fichierLu->d_name << "\tPosition : " << telldir(rep) << endl;
 
        if (isDir(chemin))
        {
            DIR* repEnfant;
            char* cheminEnfant = strcat(chemin, fichierLu->d_name);
            repEnfant = opendir(cheminEnfant);
            analyseDossier (repEnfant, cheminEnfant);
        }
    }
}
Donc cette fonction appelle isDir() qui renvoie vrai ou faux si c'est un dossier ou non (même critère que dans le tuto : s'il y a un point on considère que c'est un fichier avec une extension) :
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
 
bool isDir(char* chemin)
{
    char* test = NULL;
    test = strchr(chemin,'.');
 
    if (test == NULL)
    {
        cout << "\nC'est un dossier." << endl;
        return true;
    }
    else
    {
        cout << test << endl;
        cout << "\n c'est un fichier." << endl;
        return false;
    }
}
Le problème, c'est qu'elle me renvoie toujours true et donc, quand l'appli revient dans analyseDossier(), elle essaye d'ouvrir un fichier comme un dossier (d'où une erreur segmentation fault).

Merci d'avance pour votre aide