bezin
Habitué
salut,
le but du programme est de mémoriser le nom des sous fichiers et dossiers d'un repertoire racine dans une liste.
le programme suivant roule mais le résultat est faux.
autrement dit si le dossier racine, par exemple, contient 3sous dossiers D1, D2, et D3, et que D3 est le dernier à être lu, l'affichage du contenu me donnera: D3 D3 D3:
[cpp]#include <dirent.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void main()
{ DIR *p;
struct dirent *ent;
char **liste,*A,*B,*C;
int i=0;
liste = new(char*);
// ouverture du dossier racine
p=opendir("C:\\Racine");
// remplir la liste avec le nom des sous dossiers et sous fichiers
while ((ent = readdir(p)) != NULL)
{
if(*(ent->d_name)!='.' && *(ent->d_name)!='..')
{
*(liste+ i)= ent->d_name;
//vérification du contenu de liste
printf("\n%s\n",*(liste+ i++));
// ce printf affiche le nom du sous dossier correctement
}
}
// vérifier le contenu de la liste après l affectation
cout<<"contenu de la liste \n";
for(int j=0; j<i;j++)
printf(" %s \t",*(liste +j));
getch();
}[/cpp]
merci
le but du programme est de mémoriser le nom des sous fichiers et dossiers d'un repertoire racine dans une liste.
le programme suivant roule mais le résultat est faux.
autrement dit si le dossier racine, par exemple, contient 3sous dossiers D1, D2, et D3, et que D3 est le dernier à être lu, l'affichage du contenu me donnera: D3 D3 D3:
[cpp]#include <dirent.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void main()
{ DIR *p;
struct dirent *ent;
char **liste,*A,*B,*C;
int i=0;
liste = new(char*);
// ouverture du dossier racine
p=opendir("C:\\Racine");
// remplir la liste avec le nom des sous dossiers et sous fichiers
while ((ent = readdir(p)) != NULL)
{
if(*(ent->d_name)!='.' && *(ent->d_name)!='..')
{
*(liste+ i)= ent->d_name;
//vérification du contenu de liste
printf("\n%s\n",*(liste+ i++));
// ce printf affiche le nom du sous dossier correctement
}
}
// vérifier le contenu de la liste après l affectation
cout<<"contenu de la liste \n";
for(int j=0; j<i;j++)
printf(" %s \t",*(liste +j));
getch();
}[/cpp]
merci