Recuperer le contenu d un dossier en C

Résolu
Ptlpn Messages postés 16 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 9 février 2005 - 27 janv. 2005 à 16:29
yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006 - 30 janv. 2005 à 20:39
Bien le bonjour,


J ai une nouvelle colle a vous poser : comment puis-je faire pour recuperer le contenu d un dossier de mon choix, en C?


Merci d avance

Ptlpn 0o.

3 réponses

alkove Messages postés 37 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 6 mai 2005
27 janv. 2005 à 18:12
salut,



regarde :

sous dos : opendir() puis readdir()

sous windows FindFirstFile() puis FindNextFile()
3
Neo020585 Messages postés 178 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 6 juillet 2009 4
28 janv. 2005 à 09:52
Il faut pour cela créer une fonction qui va rentrer dans le répertoire que tu as choisis.
Elle va ensuite regarder le 1er élément :
- si c'est un dossier, elle rentre dedans, puis elle parcours à nouveau ce dossier en appelant la fonction que tu as créee (récursivité), etc...
- si c'est un fichier, tu récupère le nom du fichier, et tu fais ce que tu veux avec :)
J'ai déjà fait cette fonction, en C++, et j'ai trouvé la source sur cppfrance. (en fait, je l'ai modifiée car elle ne me donnait pas assez d'info pour mon prog !) :
http://www.cppfrance.com/codes/SCANDISC_SIMPLE_POUR_LISTER_LE_CONTENU_DUN_REPERTOIRE_-_DES_SOUS-REPERTOIRES-/22116.aspx
Je ne peux pas t'assurer qu'elle fonctionne en C, mais mon raisonnement est celui que tu doit appliquer pour obtenir un bon résultat.


Néo020585

La programmation, c'est l'art de découvrir
0
yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006
30 janv. 2005 à 20:39
Voila un exemple de fonction qui supprime tous les fichiers et repertoires d'un repertoire passé en parametre

//---------------------------------------------------------------------------
//Suppression récursive des fichiers d'un repertoire
void fSupp_Files ( char f_Rep [ 512 ] )
{
//Déclaration des variables
char f_Chemin [ 512 ] ;
WIN32_FIND_DATA wData ;
HANDLE f_Find ;

//Initialisation des variables
//Ajout de *.* f_Chemin
sprintf ( f_Chemin , "%s*.*" , f_Rep) ;
//Initialisation du Handle de recherche de fichiers
f_Find = FindFirstFile(f_Chemin, &wData);
//Suppresion de *.* a f_Chemin
strcpy ( f_Chemin , f_Rep ) ;

if ( f_Find != INVALID_HANDLE_VALUE)
{
do
{
if ( ( strcmp (wData.cFileName , "..") ) && ( strcmp (wData.cFileName, ".") ) )
{
if ( wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
//puisque c'est un repertoire, on recupere la nouvelle adresse, et on va rentrer dedans...
sprintf ( f_Chemin , "%s%s\", f_Rep , wData.cFileName ) ;
//On rappelle la fonction pour qu'elle supprime les fichiers du répèrtoire
fSupp_Files ( f_Chemin ) ;
RemoveDirectory ( f_Chemin ) ;

// reviens un repertoire en arriere
int j = strlen ( f_Chemin ) - 2 ;
while ( j > 0 )
{
if ( f_Chemin [ j ] == '\\' )
{
f_Chemin [ j+1 ] = '\0' ;
break ;
}
j -- ;
}
}
else // ce n'est pas un répèrtoire donc le fichier est supprimé
sprintf ( f_Chemin , "%s%s" , f_Rep , wData.cFileName ) ;
DeleteFile ( f_Chemin ) ;

}
} while ( FindNextFile ( f_Find , &wData ) ) ;
}
FindClose( f_Find );
0