Recuperer le contenu d un dossier en C [Résolu]

Messages postés
16
Date d'inscription
lundi 5 avril 2004
Dernière intervention
9 février 2005
- - Dernière réponse : yserver
Messages postés
203
Date d'inscription
lundi 2 août 2004
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.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
37
Date d'inscription
jeudi 27 mars 2003
Dernière intervention
6 mai 2005
3
Merci
salut,



regarde :

sous dos : opendir() puis readdir()

sous windows FindFirstFile() puis FindNextFile()

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de alkove
Messages postés
178
Date d'inscription
lundi 10 mars 2003
Dernière intervention
6 juillet 2009
0
Merci
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
Commenter la réponse de Neo020585
Messages postés
203
Date d'inscription
lundi 2 août 2004
Dernière intervention
8 septembre 2006
0
Merci
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 );
Commenter la réponse de yserver

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.