Lister un repertoire sans dirent.h

Signaler
Messages postés
56
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
11 novembre 2005
-
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
-
hello,
j'ai vu dans le forum des sources permettant de lister un répertoire (fichiers et sous dossiers) en utilisant le header dirent.h

le probleme, c'est que je ne l'ai pas. peut on faire sans?
Comment? ou alors me faut il dirent.h?

5 réponses

Messages postés
199
Date d'inscription
lundi 22 juillet 2002
Statut
Membre
Dernière intervention
14 juin 2006

slt

Essai ça si tu es sous windows :

#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main()
{

HANDLE hfind;
WIN32_FIND_DATA wfd;

// Liste le contenu du répertoire
hfind = FindFirstFile ( "le chemin du répertoire + \*.* ", &wfd );
if (hfind != INVALID_HANDLE_VALUE)
{
do
{
if( wfd.cFileName[0] != '.')
{

dans wfd.cFileName tu récupéres le nom du fichier
}

}while(FindNextFile( hfind, &wfd));
FindClose(hfind);
}

}

Bon Prog @+

Trinita16
Messages postés
56
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
11 novembre 2005

Merci!!
mais comment differencier les fichiers des sous dossiers?
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

C'est simple, avec le membre .dwFileAttributes de WIN32_FIND_DATA, je vait reprendre l'exemple de Trinita16.

// pour FindFirstFile()/FindNextFile() & FindClose()
#include <windows.h>
// pour cout
#include

void main()
{

HANDLE hfind; // va contenir le handle(identificateur) de la recherche
WIN32_FIND_DATA wfd; // va contenir les informations de la recherche

// lance la recherche
hfind = FindFirstFile ("c:\\*.* ", &wfd );
// si rien n'a été trouvé, INVALID_HANDLE_VALUE est retourné
if ( hfind != INVALID_HANDLE_VALUE )
{
do
{
// vérifie que ce n'est pas le répertoire courant ou précédent(. ou ..)
if( wfd.cFileName[0] != '.' )
{
// vérifie si c'est un répertoire ou non
if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
// c'est un répertoire
cout << "Repertoire: " << wfd.cFileName << "\n";
}
else {
// c'est un fichier
cout << "Fichier: " << wfd.cFileName << "\n";
}

}
// poursuit la recherche
}while(FindNextFile( hfind, &wfd));
// recherche terminé, ferme la recherche
FindClose(hfind);
}

}

Voilà ...
pour plus d'infos sur la structure WIN32_FIND_DATA regarde MSDN, il y à tout, absolument tout sur la Win32 API ...

~(.:: NitRic ::.)~
Messages postés
56
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
11 novembre 2005

MERCI les gars, z'êtes trop fort ;-)
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

da rien ;)

~(.:: NitRic ::.)~