Jeux Libres

Envie de créer un jeu vidéo ?   Le site qui vous accompagne de A à Z.


» Les Forums » A propos de la création de jeux vidéo » Lister la totalité des fichiers d'un disque dur


Aller à la page : 1.

Lister la totalité des fichiers d'un disque dur
David



Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 02 Jan 2007, 01:24             Message non corrigé

Voici un petit programme qui permet de lister la totalitée les fichiers d'un disque dur.

Il est entre autre un bon exemple de programme qui utilise une fonction récursive.

Voici le code à tester en console. Il ne nessessite l'installation d'aucune librairie

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>

void listerFichier (const char* dossier);

int main(void)
{
    char dossier[] = "c:\\";

    listerFichier (dossier);

    return 0;
}

void listerFichier (const char* dossier)
{
    struct dirent *lecture;
    DIR *rep;
    rep = opendir (dossier);
    char dossierCourant[4096] = "\0", aParcourir[4096] = "\0";
    int i = 0, j = 0;

    FILE *fp;

    strcat (dossierCourant, dossier);

    i = 0;
    while ((lecture = readdir (rep)))
    {
        strcat (aParcourir, dossier);
        strcat (aParcourir, lecture->d_name);
        fp = fopen (aParcourir, "r");

        if (i >= 2 || strlen (dossier) <= 3) // On ne tien pas compte de "." et ".."
        {
            if (fp == NULL)
            {
               // C'est un dossier

                   // Préparation de l'adresse du nouveau dossier
                   strcat (dossierCourant, lecture->d_name);
                   strcat (dossierCourant, "\\");

                   printf ("DOSSIER: %s\n", dossierCourant);

                   // Je boucle la fonction sur elle-même
                   // pour scaner en profondeur dans les dossiers
                   listerFichier (dossierCourant);

                   // Je vide la chaine
                   j = 0;
                   while (j <= 4095)
                   {
                       dossierCourant[j] = NULL;
                       j ++ ;
                   }

                   strcat (dossierCourant, dossier);
            }
            else
            {
               // C'est un fichier, on l'affiche
               printf ("FICHIER: %s\n", aParcourir);
               fclose (fp);
            }
        }

        // Je vide la chaine
        j = 0;
        while (j <= 4095)
        {
            aParcourir[j] = NULL;
            j ++ ;
        }

        i++;
    }

    closedir (rep);
}

N'hésitez pas à modifier et à améliorer ce code.

A bientôt !

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil Mail
yoyo0073



Grade : Débutant
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 02 Jan 2007, 01:28             Message non corrigé

Bonsoir,
Super c'est exactement sa que je cherchais.
Ca va beaucoup m'aider dans mon projet.  

Merci beaucoup  
a+
  Profil Mail
visiteur



Visiteur
Ecrit le: 28 Août 2007, 11:44             Message non corrigé

bonjour

J'aimerai savoir comment lister les fichiers d'un dossier particulier avec le code source donné ci-dessus

Merci d'avance
  Profil Mail
visiteur



Visiteur
Ecrit le: 13 Sept 2007, 14:50             Message non corrigé

Personne veut repondre
  Profil Mail
David



Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 13 Sept 2007, 15:05             Message non corrigé

C'est avec la fonction opendir() et readdir().
La source me paraît claire, non ?

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil Mail
visiteur



Visiteur
Ecrit le: 14 Sept 2007, 18:28             Message non corrigé

Merci de m'avoir repondu le probleme c'est que la fonction liste tous les fichiers du disque dur et moi je veux lister les fichier d'un seul dossier particulier. J'ai essayé de mondifier char dossier[] = "c:\\"; par char dossier[] = "le dossier que je veux";  mais ca ne marche pas ca plante.
  Profil Mail
David



Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 15 Sept 2007, 13:05             Message non corrigé

Qui peut le plus peut le moin, non ?
Si tu ne comprend pas ce code, même si je t'écrivais la source de ce que tu veux, tu ne pourrais pas t'en servir.
Essai de comprendre, je ne te donnerais pas plus de renseignement.

A bientôt !

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil Mail
swolf



Grade : Débutant
Inscrit le: 15 Oct 2007, 20:50
Ecrit le: 17 Oct 2007, 14:09             Message non corrigé

Voici un petit programme qui permet de lister la totalitée les fichiers d'un disque dur.

Il est entre autre un bon exemple de programme qui utilise une fonction récursive.

Voici le code à tester en console. Il ne nessessite l'installation d'aucune librairie

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>

void listerFichier (const char* dossier);

int main(void)
{
    char dossier[] = "c:\\";

    listerFichier (dossier);

    return 0;
}

void listerFichier (const char* dossier)
{
    struct dirent *lecture;
    DIR *rep;
    rep = opendir (dossier);
    char dossierCourant[4096] = "\0", aParcourir[4096] = "\0";
    int i = 0, j = 0;

    FILE *fp;

    strcat (dossierCourant, dossier);

    i = 0;
    while ((lecture = readdir (rep)))
    {
        strcat (aParcourir, dossier);
        strcat (aParcourir, lecture->d_name);
        fp = fopen (aParcourir, "r");

        if (i >= 2 || strlen (dossier) <= 3) // On ne tien pas compte de "." et ".."
        {
            if (fp == NULL)
            {
               // C'est un dossier

                   // Préparation de l'adresse du nouveau dossier
                   strcat (dossierCourant, lecture->d_name);
                   strcat (dossierCourant, "\\");

                   printf ("DOSSIER: %s\n", dossierCourant);

                   // Je boucle la fonction sur elle-même
                   // pour scaner en profondeur dans les dossiers
                   listerFichier (dossierCourant);

                   // Je vide la chaine
                   j = 0;
                   while (j <= 4095)
                   {
                       dossierCourant[j] = NULL;
                       j ++ ;
                   }

                   strcat (dossierCourant, dossier);
            }
            else
            {
               // C'est un fichier, on l'affiche
               printf ("FICHIER: %s\n", aParcourir);
               fclose (fp);
            }
        }

        // Je vide la chaine
        j = 0;
        while (j <= 4095)
        {
            aParcourir[j] = NULL;
            j ++ ;
        }

        i++;
    }

    closedir (rep);
}


desolé mé a qoi sa sert?
p-s je debute en php

________
feel the power of PureBasic
  Profil Mail
David



Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 17 Oct 2007, 16:25             Message non corrigé

C'est pas du PHP, c'est du C.
Tu veux lister les fichiers de ton serveur ?

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil Mail
 


Aller à la page : 1.


Hébergeur du site : 1and1.fr



Site de création de Jeux Vidéo
Apprenez à créer vos propres Jeux Video

1389455 pages ont été consultées sur le site !
Dont 1475 pages pendant les 24 dernières heures.

Page générée en 0.461 secondes


Nos partenaires
- Otium Production : Aide aux débutants à créer leurs jeux
- Les bibliothèques de développement de jeux vidéo


  © 2005-2012 www.jeux-libres.com - Toute reproduction totale ou partielle du contenu de ce site est strictement interdite.