begin process at 2012 05 29 21:51:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Problème : répertoire, fichiers et récursivitée.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème : répertoire, fichiers et récursivitée.

vendredi 16 décembre 2005 à 11:25:52 | Problème : répertoire, fichiers et récursivitée.

yserver

Bonjour,
Cette fonctions marche très bien, mais produit une sortie inattendu pour moi. J'ai beau chercher je ne trouve pas la raison de ce résultat.
ulNbRep est toujours correct, mais ulNbFichiers est toujours égale au nombre de fichiers plus le nombre de répertoire réellement présent à l'emplacement analysé.

//ulNbFichiers et ulNbRep sont des variable globales
void Count_Files (char cRep[512])
{
 //Déclaration des variables
 char cChemin [512];
 char cTemp [2];
 WIN32_FIND_DATA wData;
 HANDLE hFind;

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

 if (hFind != INVALID_HANDLE_VALUE)
  {
     do
   {
   MessageBox(NULL, wData.cFileName, "Fichier", NULL);
         if ((strcmp(wData.cFileName, "..")) && (strcmp(wData.cFileName, ".")))
    {
             //Si C'est un répertoire
             if (wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
     {
     //puisque c'est un repertoire, on recupere la nouvelle adresse, et on va rentrer dedans...
     sprintf (cChemin , "%s%s\\",cRep ,wData.cFileName);
     //On rappelle la fonction pour qu'elle analyse le sous répertoire
     Count_Files(cChemin);
     ulNbRep ++;
     // revient un repertoire en arriere
     strcpy(cChemin,cRep);
                 }
             //Si non c'est un fichier
             else
    // ce n'est pas un répèrtoire donc le fichier est analysé
    sprintf ( cChemin , "%s%s" , cRep , wData.cFileName );
    ulNbFichiers ++;
    }
         } while ( FindNextFile ( hFind , &wData ) ) ;
  }
 FindClose( hFind );
}

Merci de votre aide.

vendredi 16 décembre 2005 à 11:49:03 | Re : Problème : répertoire, fichiers et récursivitée.

fredcl

Réponse acceptée !
Bonjour,

            else
            {
               // ce n'est pas un r
               sprintf ( cChemin , "%s%s" , cRep , wData.cFileName );
               ulNbFichiers ++;
            }
Manque { après else et } après ulNbFichiers++

Cordialement

Fred Cailleau-Lepetit ( [ Lien ])

vendredi 16 décembre 2005 à 11:55:19 | Re : Problème : répertoire, fichiers et récursivitée.

yserver

Merci beaucoup, c'est parfait.
vendredi 16 décembre 2005 à 12:36:54 | Re : Problème : répertoire, fichiers et récursivitée.

BruNews

Administrateur CodeS-SourceS

if((strcmp(wData.cFileName, "..")) && (strcmp(wData.cFileName, "."))) {

A remplacer avantageusement par:
if(wData.cFileName[0] != '.') {

ciao...
[ Lien ]
BruNews, MVP VC++

vendredi 16 décembre 2005 à 13:27:26 | Re : Problème : répertoire, fichiers et récursivitée.

yserver

BruNews, merci pour l'info. Mais peux tu me dire pourquoi.

Merci de votre aide.
vendredi 16 décembre 2005 à 14:01:04 | Re : Problème : répertoire, fichiers et récursivitée.

BruNews

Administrateur CodeS-SourceS
ben pour la vitesse et taille code.
1 seule instruction
cmp byte ptr cFileName[0], '.'
jne LABEL
absolument imbattable et vu que le résultat est le même, pas de raison de se priver.

ciao...
[ Lien ]
BruNews, MVP VC++
vendredi 16 décembre 2005 à 14:02:48 | Re : Problème : répertoire, fichiers et récursivitée.


Cette discussion est classée dans : répertoire, hfind, wdata, cchemin, crep


Répondre à ce message

Sujets en rapport avec ce message

Problème de listage de fichiers [ par graall ] Bonjour,j'ai un problème avec cette fonction :void Include::MakeHtml(){    char include_dir[_MAX_DIR] = "d:\\";     HANDLE hfind;    WIN32_FIND_DATA w Boite de dialogue pour selctionner répertoire [ par CeNedra83 ] Je suis en train de développer une petite interface dans laquelle j'ai besoin que l'utilisateur choisisse un répertoire puis que le nom du répertoire Erreur dans une fonction maison :( [ par lamoueste ] voila mon petit bout de code qui copie tous les fichiers d'un repertoire(c:\t) vers un autre repertoire (c:\Zipper_Vtfw32) temporaire mais j'ai des er Modifier les droits utilisateur d'un répertoire [ par Gpic ] bonjour, je suis en train de faire une application en c++ et je voudrai savoir comment changer les droit utilisateur à partir de cette application. Me Copier contenu d'un repertoire vers un autre repertoire [ par vero77lisa ] Bonjour, Je cherche une fonction C++ permettant de copier le contenu d'un répertoire, vers un autre répertoire j'utilise C++Builder6 Merci a tous V SHBrowseForFolder() [ par LordBob ] Salut a tous, voila une fonction que j'ai écrite, qui permet de selectionner un répertoire: // fonction qui permet de sélectionner un dossier char *O probleme avec Liste Files [ par anonyme_man_in_this_world ] salut ! !je voudrais ecrire une fonction essayant de lister les fichiers et les sous-dossiers d'un dossier mais ça ne marche pas toujours ,voila le co Findfirstfile ? [ par lamoueste ] bonjour a tous alors voila j'ai un petit souci avec cette fonction, le findfirstfile retourne un invalid handle value et je ne sais pas a quoi c'est d PB pour parcourir tout les dossiers [ par supers03 ] Bonjours à tousJ'ai écrit un programme qui parcour un dossier et ses sous-dossier, avec une fonction qui "s'auto appel" :void cherche(char *s){    HAN En "C "sous Visual C++ et sous XP comment copy des fichiers (ou répertoire complet) , vers un PC distant ,via un réseau local. [ par timy94 ] En C sous Visual C++ et sur XP, comment, lire ecrire ou copier un fichier (ou un répertoire complet) via un réseau local.Bref, comment se déplacer dan


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,498 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales