Parcourir une arborescence en C

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 - 12 août 2003 à 16:04
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 12 août 2003 à 17:22
Salut, je voudrai savoir comment en utilisant les fonction findfirst() et findnext() du C trouver tous les fichiers d'extension .exe. Je mexplique : le vrai problème est qu'avec ces fonctions, la recharche se fait dans le répertoire courant. Comment parcourir tous les répertoires... J'ai essayé un truc bidon avec chdir() mais vue que je ne connais pas d'avance le nom des répertoires et y'en à tellement....
Merci d'avance et a+

8 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 16:12
Salut,
Il faut que tu fasse une fonction recursive.
Tu fais une fonction qui liste les *.exe et les dossier. Si tu trouve un dossier, tu re-appelle ta fonction dans ce dossier, et ainsi de suite tant qu'il y aura des dossiers.
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
12 août 2003 à 16:29
Le grs soucis c'est que je ne sais pas comment a partir du repertoire courant répertorié d'une part les sous répertoires et d'autre part comment remonter au répertoire(s) parents. Ma première idée est de partir de la racine du disque, mais après? Comment lister les répertoires et leurs sous répertoires????
Merci d'avance et a+
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 16:35
The FindFirstFile function searches a directory for a file whose name matches the specified filename. FindFirstFile examines subdirectory names as well as filenames.

Apparemment il charche déja dans les sous-dossier donc pas besion de fontion récursive...
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 16:39
Salut,
Tu trouves les *.exe et les repertoires grace a FindFirstFile() et FindNextFile().
Puisque ta fonction est recursive pas besoin de "remonter les repertoires".
Ta fonction liste les *.exe, et les repertoires. Si elle trouve un rep, elle se lance dedant. et pour tout les sous rep et les sous-sous-rep ca se fera aussi vu qu'elle est recursive.
Quand ta fonction ne trouve plus aucun *.exe ni repertoire, elle retourne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
12 août 2003 à 16:40
Cool, c'est sympa. Et sous un environement DOS???
a+
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 16:50
Salut,
Apparement non.
Cette phrase ne veut pas dire que FindFirstFile cherche aussi le fichier dans les sous dossier, elle veut dire que les nom des dossier sont traités comme les noms de fichiers.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 17:12
Oui tu as raison j'avais mal lu, c'était trop beau :)
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 17:22
Oui ca aurait été puissant quand meme comme fonction :).
0
Rejoignez-nous