mhg | Bonjour,
je me suis remis au c récemment et la je butte sur un problème :
dans un premier temps je souhaite parcours un dossier et ses sous-dossiers à la recherche de certains fichiers qui par la suite exécuteront des actions. J'utilise pour cela une fonction readdir_rec récursive qui lis chaque sous dossier qu'il trouve et m'affiche cela à l'écran pour l'instant.
Seulement ca ne marche pas !
Plus étonnant quand j'affiche le paramètre dossier, il change après l'appel à sprintf je ne comprend pas pourquoi ?
Est-ce que quelqu'un voit mon problème ??
Code :
- #include <cstdlib>
- #include <iostream>
- #include <stdio.h>
- #include <dirent.h>
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
- int readdir_rec(char * dossier) {
- DIR * pdossier;
- DIR * psousdossier_open;
- struct dirent * psousdossier_read;
- char * sousdossier;
- char * nomdudossier;
- pdossier = opendir(dossier);
- if (!pdossier) {
- printf ("dossier d'entree impossible a ouvrir !\n" );
- system("PAUSE" );
- exit(1);
- }
- errno=0;
- while ((psousdossier_read=readdir(pdossier))){
- nomdudossier=psousdossier_read->d_name;
- //printf("%s",dossier);
- sprintf(sousdossier,"%s%s/",dossier,nomdudossier);
- //printf("------%s\n",dossier);
- if (strcmp(nomdudossier,"." )!= 0 && strcmp(nomdudossier,".." )!= 0){
- psousdossier_open = opendir(sousdossier);
- if (psousdossier_open != NULL) {
- closedir(psousdossier_open);
- printf("+%s\n", nomdudossier);
- readdir_rec(sousdossier);
- } else { printf(strerror(errno));printf(sousdossier);}
- }
- }
- if (errno){
- printf ("readdir() failure; terminating\n" );
- system("PAUSE" );
- exit(1);
- }
- closedir(pdossier);
- return 0;
- }
|
ps compilé sous dev c++ si ca apporte quelquechose.
Merci d'avance |