Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1154 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Problème avec une fonction récursive

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Problème avec une fonction récursive

n°1636005
mhg
Posté le 03-11-2007 à 11:50:07  profilanswer
 

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 :
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <dirent.h>
  5. #include <errno.h>
  6. #include <string.h>
  7. #include <sys/types.h>
  8. int readdir_rec(char * dossier) {
  9.     DIR * pdossier;
  10.     DIR * psousdossier_open;
  11.     struct dirent * psousdossier_read;
  12.     char * sousdossier;
  13.     char * nomdudossier;
  14.     pdossier = opendir(dossier);
  15.     if (!pdossier) {
  16.         printf ("dossier d'entree impossible a ouvrir !\n" );
  17.         system("PAUSE" );
  18.         exit(1);
  19.     }
  20.     errno=0;
  21.     while ((psousdossier_read=readdir(pdossier))){
  22.         nomdudossier=psousdossier_read->d_name;
  23.         //printf("%s",dossier);
  24.         sprintf(sousdossier,"%s%s/",dossier,nomdudossier);
  25.         //printf("------%s\n",dossier);
  26.         if (strcmp(nomdudossier,"." )!= 0 && strcmp(nomdudossier,".." )!= 0){
  27.             psousdossier_open = opendir(sousdossier);
  28.             if (psousdossier_open != NULL) {
  29.                 closedir(psousdossier_open);
  30.                 printf("+%s\n", nomdudossier);
  31.                 readdir_rec(sousdossier);
  32.             } else { printf(strerror(errno));printf(sousdossier);}
  33.         }
  34.     }
  35.     if (errno){
  36.         printf ("readdir() failure; terminating\n" );
  37.         system("PAUSE" );
  38.         exit(1);
  39.     }
  40.     closedir(pdossier);
  41.     return 0;
  42. }


ps compilé sous dev c++ si ca apporte quelquechose.
Merci d'avance

mood
Publicité
Posté le 03-11-2007 à 11:50:07  profilanswer
 

n°1636045
mhg
Posté le 03-11-2007 à 13:44:31  profilanswer
 

J'ai enfin trouvé !
En définissant sousdossier non plus en char * sousdossier mais en char sousdossier[255] ca marche !

n°1636059
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-11-2007 à 14:26:49  profilanswer
 

mhg a écrit :

je me suis remis au c récemment  

Code :
  1. #include <cstdlib>
  2. #include <iostream>
  3. <...>




Pas du C. Le forum C++, c'est à coté.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1636101
Taz
bisounours-codeur
Posté le 03-11-2007 à 17:21:05  profilanswer
 

très bof. Lis ça http://udrepper.livejournal.com/18555.html .
 
Sinon tu peux aussi repartir au chapitre chaîne de caractères, allocation toussa ?

n°1637538
matafan
Posté le 06-11-2007 à 12:46:44  profilanswer
 

Faut espérer que tu n'ai pas de lien vers un répertoire parent.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Problème avec une fonction récursive

 

Sujets relatifs
[Debutant] probleme boucleProbleme avec une variable dasn un formulaire
Problème avec un IF/ELSE[Access] Petit problème de requete
[AJAX] Problème pour affichage de l'heureproblème dans un bloc PL/SQL[RESOLU]
Aide pour comprendre une fonctionProbleme avec session_destroy
Probleme legal copie SQL (Haut importance)probleme infobulle javascript
Plus de sujets relatifs à : [C] Problème avec une fonction récursive


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR