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

  FORUM HardWare.fr
  Programmation
  C

  Liste des fichiers d'un repertoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Liste des fichiers d'un repertoire

n°696093
GOUGOU1
Posté le 08-04-2004 à 22:53:20  profilanswer
 

Bonjour, je voudrais pouvoir recuperer la liste des fichiers dans un repertoire. Le repertoire courant, ou un autre que je pourrais spécifier.
Je voudrais savoir si des commande du style find first, find next existe.
PAr ex, j'appelle find first, et çà me renvoie un pointeur vers le premier fichier du repertoire et find next autant de fois que je veux pour m'envoyer des pointeurs vers les autres.
Je voudrais aussi savoir s'il existe une commande me retournant le nombre de fichiers du repertoire.
 
Enfin, je précise que je prefererais ne PAS passer par les mfc, car c'ets encé etre un code portable sous linux, mais aussi sous window.
Merci et @+++

mood
Publicité
Posté le 08-04-2004 à 22:53:20  profilanswer
 

n°696120
Taz
bisounours-codeur
Posté le 08-04-2004 à 23:30:23  profilanswer
 

rien de standard.
 
peut être en utilisant la glib

n°696139
GOUGOU1
Posté le 09-04-2004 à 00:28:00  profilanswer
 

Glib  :??:  kesako ?
 
j'ai trouvé çà en fouillant sur le net avec mon ami google :love:  

Code :
  1. #include <stdio.h>
  2. #include <dir.h>
  3. #include <conio.h>
  4. #include <dos.h>
  5. #include <string.h>
  6. // recherche le repertoire courant
  7. char *current_directory (char *path)
  8. {
  9.     strcpy (path, "X:\\" );      // on place un X
  10.     path[0] = 'A' + getdisk();  // on remplace le X par le vrai disque
  11.     getcurdir (0, path+3);      // on recherche les sous-repertoires
  12.     return (path);
  13. }
  14. void main(void)
  15. {
  16.     /*
  17.     struct ffblk
  18.      {
  19.         char ff_reserved[21]; // reserve par DOS
  20.         char ff_attrib;      // attribut a trouver
  21.         int ff_ftime;       // temps fichier
  22.         int ff_fdate;       // heure fichier
  23.         long ff_fsize;      // taille fichier
  24.         char ff_name[13];    // nom fichier
  25.      };
  26.     */
  27.     struct ffblk ffblk;     // info fichiers
  28.     char curdir[MAXPATH];   // chemin
  29.     int done;               // compteur
  30.     clrscr();
  31.     current_directory(curdir);
  32.     printf("Repertoire : %s\n", curdir);
  33.     printf("Affichage des fichiers avec l'extension *.*\n" );
  34.     delay(1500);
  35.     done = findfirst("*.*",&ffblk,0);
  36.     while (!done)
  37.      {
  38.         printf(" %s\t", ffblk.ff_name);
  39.         done = findnext(&ffblk);
  40.      }
  41.     getch();
  42. }


 
et
 

Code :
  1. //La recherche peut porter sur un listage non exhaustif,
  2. //par exemple, listage des fichiers '*.txt'.
  3. //Pour un listage exhaustif, il faudra demander le listage des fichiers '*.*'
  4. #include <stdio.h>
  5. #include <windows.h>
  6. #include <dir.h>
  7. void ls(char *);
  8. void main()
  9. {
  10.    // ******* On determine le repertoire courant
  11.    char dir[MAXDIR];           // Tableau qui va contenir le path.
  12.    strcpy(dir, "X:\\" );        // Remarque: X est pris au hazard.
  13.    dir[0] = 'A' + getdisk();   // On remplace X par la lettre du lecteur.
  14.    getcurdir(0, dir+3);        // On rajoute le reste du path => getcurdir()
  15.    // **************************
  16.    printf("Le repertoire courant est : %s\n\n\n",dir);
  17.    strcat(dir,"\\*.*" );        // On va lister ts les fichiers du rep.
  18.    ls(dir);                    // Fonction qui va lister.
  19.    system("PAUSE" );            // Pause
  20. }
  21. void ls(char * path)
  22. {
  23.    int r=0, f=0;               // r -> nbre de repertoire, f -> nbre de fichier
  24.    WIN32_FIND_DATA File;       // Va contenir les informations de la recherche
  25.    HANDLE liste;         // Va contenir le handle de la recherche
  26. // FindFirstFile() initialise la recherche et retourne le premier fichier trouvé.
  27.    liste = FindFirstFile(path, &File);
  28. // FindNextFile() récupére l'ensemble des fichiers trouvés.
  29.    while((FindNextFile(liste, &File))){
  30. if(File.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){// ==> Repertoire
  31.     printf("<REP>\t%s\n",File.cFileName);
  32.     r++;
  33.      }
  34.      else{// ==> Fichier
  35.             printf("\t%s\t%d,%d Ko\n",
  36.             File.cFileName, // Nom
  37.             (File.nFileSizeHigh*MAXDWORD+File.nFileSizeLow)/1024, //taille
  38.                     (File.nFileSizeHigh*MAXDWORD+File.nFileSizeLow)%1024);
  39.     f++;
  40. }
  41.    }
  42.    printf("\n\t\t\t%d repertoire(s)\n",r);
  43.    printf("\t\t\t%d fichier(s)\n\n\n",f);
  44. // FindClose() ferme la recherche
  45.    FindClose(liste);
  46. }


 
Le pb, c'est que çà compile pas à cause des fonctions
getcurdir et gesdisk
Il manque un header non ?
@+++


Message édité par GOUGOU1 le 09-04-2004 à 10:29:12
n°696140
Taz
bisounours-codeur
Posté le 09-04-2004 à 00:28:59  profilanswer
 

ça c'est du pur code windows

n°696146
Taz
bisounours-codeur
Posté le 09-04-2004 à 00:40:28  profilanswer
 

en Glib2 qui existe à peu près partout
 
 

Code :
  1. #include <glib.h>
  2. #include <stdio.h>
  3. int main()
  4. {
  5.   GDir *root = g_dir_open("/", 0, NULL);
  6.   const gchar *entry = NULL;
  7.   while((entry = g_dir_read_name(root)) != NULL)
  8.     {
  9.       puts(entry);
  10.     }
  11.   g_dir_close(root);
  12. }


 
 
t'as pas idée à quel point le code que tu as donné est 100% windows, y a au moins une dizaine de fonction spécifique à windows : delay, getch, clrscr, getcurdir, getdisk, struct ffblk, findfirst ne serait-ce que pour le premier morceau de code

n°696186
matafan
Posté le 09-04-2004 à 06:05:17  profilanswer
 

opendir, c'est POSIX.

n°696411
Taz
bisounours-codeur
Posté le 09-04-2004 à 12:31:45  profilanswer
 

matafan a écrit :

opendir, c'est POSIX.

c'est POSIX windows ?

n°696425
GOUGOU1
Posté le 09-04-2004 à 12:50:43  profilanswer
 

ok, donc, il faudrait que je trouve une description du contenu des fonction de glib, c'est çà ?

n°696519
Taz
bisounours-codeur
Posté le 09-04-2004 à 14:29:28  profilanswer
 

GOUGOU1 a écrit :

ok, donc, il faudrait que je trouve une description du contenu des fonction de glib, c'est çà ?
 

ben la glib existe pour windows

n°696865
GOUGOU1
Posté le 09-04-2004 à 23:20:22  profilanswer
 

je vais peter un cable   :sleep:  
J'ai tapper glib dasn google, et bin j'ai trouvé de tout
Tu parle de quel glib ? Du glib pour gtk ou d'un autre truc, car j'ai trouvé une bibliothèque pour simulier un synthé qui s'appel glib  :pfff:  
Pourrais tu m'éclairer un peu plus ?
Sinon, j'ai essayé de compiler ces codes mais mon compilateur ne trouve pas dir.h, je peux le chopper où (j'ai déjà cherché, mais rien de sur, car là aussi, j'ai 50 versions différentes}
merci, et @+++

mood
Publicité
Posté le 09-04-2004 à 23:20:22  profilanswer
 

n°696891
Taz
bisounours-codeur
Posté le 09-04-2004 à 23:46:54  profilanswer
 

gtk.org :o
 
 
ton code à toi, en tout cas, il ne passera certainement pas sous Linux, et sous windows, faut que tu trouves le bon compilateur et tout le bordel : bref t'es coincé des deux côtés : alors que la glib, elle marche partout

n°697025
GOUGOU1
Posté le 10-04-2004 à 12:50:40  profilanswer
 

bon, je crois avoir trouvé mon bonheur (par hasard)
 
http://forum.hardware.fr/hardwaref [...] 7128-1.htm
 
par contre, c'est 100% window, mais au moins, çà marche, donc je reste sur çà.
A la rentré, j'irais voir mon prof de système pour qu'il m'explique comment faire sous linux, mais je pense que je pourrais faire un appel de ls en redirigeant la sortie dans un fichier, en ensuite m'occuper de ce fichier.
@+++

n°697027
Taz
bisounours-codeur
Posté le 10-04-2004 à 12:59:28  profilanswer
 

attends, tu nous prends la tête que tu veux un truc qui marche partout ... moi je te sors la glib ... et la tu nous ponds une windowserie de MERDE et tu conclues que sous linux tu va utiliser ls (on ne parle même pas de pipe évidemment) . NON TU LE FAIS EXPRES OU QUOI ?
 
man opendir
man readdir
man closedir
man scanddir
man glob
 
la prochaine fois que tu poseras une question, je ferais bien attention de me souvenir que tu demandes ce dont tu ne veux pas, et qu'en fin de compte, t'en as pas grand chose à faire des réponses.


Message édité par Taz le 10-04-2004 à 13:12:12
n°697029
skeye
Posté le 10-04-2004 à 13:00:19  profilanswer
 

GOUGOU1 a écrit :


A la rentré, j'irais voir mon prof de système pour qu'il m'explique comment faire sous linux, mais je pense que je pourrais faire un appel de ls en redirigeant la sortie dans un fichier, en ensuite m'occuper de ce fichier.
@+++


[:lacuna coil]

n°697041
GOUGOU1
Posté le 10-04-2004 à 13:48:49  profilanswer
 

J'ai pas linusx chez moi, je l'ais qu'a l'IUT.
Et pour glib, je l'ais dl, mais j'arrive pas à linker correctement.
Et oui, mon but est de faire un truc portable, mais je vais déjà tenter de le faire uniquement sous windaub puis je ferais les changements adequa pour le rendre portable.
 

Citation :

man opendir  
man readdir  
man closedir  
man scanddir  
man glob


 
pk tu m'a pas donné ces fonctions dès le début ?
C'ets un truc tout nouveau pour moi çà, donc voilà, je sais pas où chercher, et quand je trouve un truc, c'est soit 100% windaub, soit çà compil pas.
 
Sinon, tu pourrais m'expliquer comment tu compile un truc tapper avec Gtk et Glib ?
Comme çà, j'aurais pas a attendre la rentrée.
J'ai déjà fait noirs de trucs avec Gtk, mais en ADA. Pour inclure les fichiers, on se fais pas chier, on rajoute juste -ipath$ et çà compile.
Avec devcpp, j'ai rajouter le chemin dans les options de compil, mais çà chi toujours, pareil pour VC6.
Comment faire ?
merci
@+++
 
PS : excuse moi, mais quand je souhaite faire un truc portable, et que j'arrive pas à le faire dasn un premier temps, bin je le fais pour une plateforme, puis je retranscrit petit à petit le code pour le rendre portable.

n°697053
GOUGOU1
Posté le 10-04-2004 à 14:26:05  profilanswer
 

pour skeye
faire l'équilavalent de çà.
 

Code :
  1. system("DIR > a.txt" );


 
mais bon, çà ne me va pas, car dans ce cas, le code sera pas portable du tout car l'instruction changera.
C'est pour çà que je voulais utiliser des trucs avec find first, find next .....
@++++


Message édité par GOUGOU1 le 10-04-2004 à 14:27:16
n°697059
skeye
Posté le 10-04-2004 à 14:27:20  profilanswer
 

GOUGOU1 a écrit :

pour skeye
 

Code :
  1. system("DIR > a.txt" );




...et?
Si tu appelles ça de la programmation, je prie pour ne jamais avoir à travailler avec toi.

n°697064
GOUGOU1
Posté le 10-04-2004 à 14:29:21  profilanswer
 

j'appele pas çà de la programmation, mais du bidouillage  :lol:  
oui, et je viens de dire que je ne voulais pas utiliser un truc de ce genre. Mais çà marcherais.
@++

n°697183
Taz
bisounours-codeur
Posté le 10-04-2004 à 17:24:43  profilanswer
 

GOUGOU1 a écrit :

J'ai pas linusx chez moi, je l'ais qu'a l'IUT.
Et pour glib, je l'ais dl, mais j'arrive pas à linker correctement.
Et oui, mon but est de faire un truc portable, mais je vais déjà tenter de le faire uniquement sous windaub puis je ferais les changements adequa pour le rendre portable.
 
PS : excuse moi, mais quand je souhaite faire un truc portable, et que j'arrive pas à le faire dasn un premier temps, bin je le fais pour une plateforme, puis je retranscrit petit à petit le code pour le rendre portable.

et bien justement, il ne faut absolument pas faire comme ça : soit tu écris 2 versions du code pour une meme interface et tu gères ça la compilation, soit tu utilises une bibliothèque qui fait ça pour toi. mais là t'es déjà dans le mur

n°697220
GOUGOU1
Posté le 10-04-2004 à 18:42:56  profilanswer
 

ok
Bon, j'ai fini de faire mon programme sous windows.
JE vais me mettre sur glib ce soir je pense.
MAis j'arrive toujours pas à compiler  :fou:  
Comment je configure mon compilateur {VC6 ou DevCpp} ?
@+++

n°697385
Taz
bisounours-codeur
Posté le 11-04-2004 à 10:40:54  profilanswer
 

je sais pas, ça doit être dans la documentation, sinon, fais un sujet pour demander de l'aide

n°697454
GOUGOU1
Posté le 11-04-2004 à 13:54:29  profilanswer
 

ok.
C'est bon, j'ai réussi à installer le tout, çà compile, mais dès que je lance le programme, çà me marque une erreur dans la fenetre dos.
 
@+++++

n°697503
Ace17
Posté le 11-04-2004 à 16:31:39  profilanswer
 

GOUGOU1 a écrit :

mon but est de faire un truc portable, mais je vais déjà tenter de le faire uniquement sous windaub puis je ferais les changements adequa pour le rendre portable.


 
Bonne chance [:xp1700]
 
Non sérieux tu perds ton temps a faire ca. Tout sera a refaire quand tu voudras passer sur un autre OS

n°697504
Ace17
Posté le 11-04-2004 à 16:32:48  profilanswer
 

GOUGOU1 a écrit :

çà me marque une erreur dans la fenetre dos.


 :lol:  :lol:  :lol:  Et ... on est censés t'implorer pour que tu nous la dises?

n°697514
GOUGOU1
Posté le 11-04-2004 à 17:43:14  profilanswer
 

Taz

Citation :

je sais pas, ça doit être dans la documentation, sinon, fais un sujet pour demander de l'aide


 
http://forum.hardware.fr/hardwaref [...] 9340-1.htm
 
Le sujet change legerment, donc j'ai crée u nouveau topic.
Mais vu que tu m'inplore ace, la voilà   :lol:  
 

Code :
  1. ** (Test Gtk.exe:1144): WARNING **: No builtin or dynamically loaded modules 
  2. were found. Pango will not work correctly. This probably means 
  3. there was an error in the creation of: 
  4. 'C:\Program Files\Microsoft Visual Studio\MyProjects\Test Gtk\Debug\etc\pango\ 
  5. pango.modules' 
  6. You may be able to recreate this file by running pango-querymodules


 
repond dans l'autre topic, ce sera plus logique.
@++

mood
Publicité
Posté le   profilanswer
 


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

  Liste des fichiers d'un repertoire

 

Sujets relatifs
[css] liste décalée[PHP] Liste des variables globales.
Liste déroulante et valeur renvoyée[CVS] comment enlever un répertoire du cvs
écriture de fichiers textes[windows] recuperer la liste des fichiers *.txt dans un repertoire
VB6 - Récupérer la liste des fichiers d'un répertoire donné[PHP] Liste des fichiers d'un repertoire quelconque
[c++] liste des fichiers d'un repertoireComment extraire la liste des fichiers d'un répertoire en VB?
Plus de sujets relatifs à : Liste des fichiers d'un repertoire


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