Bonjour,

je suis entrain de faire un code qui me permettrais d'affichier ce qu'il ya dans un dossier récursivement c'est à dire il doit m'afficher le contenu du dossier que je lui donne et le contenu des sous dossiers aussi.
Donc j'ai fait un code mais la récursivité ne marche pas. Alors aidez moi à comprendre svp.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <dirent.h>
 
#ifdef WIN32
    #include <sys/types.h>
    #define CLEAR "cls"
 
#endif
///***************************************************Declaration des fonctions**************************************///
int isDir(char* s);
void lire(char* s);
void lireDossier(char* s, DIR* rep);
void parcourirDossier(DIR* rep, char* chemin);
///******************************************************************************************************************
 
//************fonction main ********************************
int main()
{
    DIR* rep = NULL;
    char chemin[500] = "";
    printf("quel est le chemin du repertoire ?\n");
    scanf("%s",chemin);
    parcourirDossier(rep, chemin);
    closedir(rep);
 
    return 0;
}//******** fin de la fonction main*************
 
// **********on test si c'est un dossier ou un fichier************
int isDir(char* path)
{
    if ((strchr(path, '.')) == NULL) // Si le nom du chemin n'a pas de point (une extension).
        return 1;
    else
        return 0;
}//***************************************************************
 
//****************lecture du chemin*******************************
void lire(char* newPath)
{
    char *enter = NULL;
    char temp[100] = ""; // Chaîne de caractères temporaire contenant la saisie de l'utilisateur.
    //printf("quel est le chemin du repertoire ?\n");
   // fgets(temp, 99, stdin);
   temp[100] =newPath;
 
    enter = strchr(temp, '\n');
    if (enter != NULL)
        *enter = '\0';
 
    strcat(newPath, temp); // On ajoute à la suite le nom du dossier pour obtenir quelque chose comme C:/nom/nom/ pour Win
 
}//*********************************************************************************
 
 
//***************** lecture et affichage du repertoire courant ****************************
void lireDossier(char* chemin, DIR* rep)
{
    char chem[500]="";
    struct dirent* ent = NULL;
 
   // printf(" -- Lecture du dossier '%s' -- \n", newPath);
 
    while ((ent = readdir(rep)) != NULL)
        {
           if (strcmp(ent->d_name, ".")!=0 && strcmp(ent->d_name, "..")!=0)
            {
 
              // if (strchr(ent->d_name, '.')== NULL)//retourne null si le nom n'a pas de point
             //  {
                   strcpy(chem, chemin );
                   strcat(chem,"\\");
                   strcat(chem, ent->d_name);
                   printf("%s\n", chem);
              // }
 
              //else {
               // lireDossier(ent->d_name, rep);
                   // }
            }
        }
 
       // printf("\n\n -- Que voulez-vous ouvrir -- ?\n");
}//****************************************************************************************
 
 
//****************Parcour récursif des dossier et des sous dossiers************************
void parcourirDossier(DIR* rep, char* chemin)
{
    lire(chemin); // Lecture du nouveau chemin;
 
 
 
    if (!isDir(chemin))
        {
 
           lireDossier(chemin, rep);
        }
    else
        {
            rep = opendir(chemin);
 
            if (rep == NULL)
                {
                    printf("Le dossier '%s' n'a pas pu etre ouvert", chemin);
                    exit(-1);
                }
 
            else{
 
           parcourirDossier(rep, chemin);
 
            }
 
        }
 
 
 
    closedir(rep); //Fermeture du répertoire.
 
 
}//********************************************************************************************