[c++]fonction de recherche

fonction de recherche [c++] - C++ - Programmation

Marsh Posté le 05-06-2002 à 15:23:41    

je cherche une fonction listant les != fichiers d'une extension précise dans un repertoire.
Un peu a la maniere de "dir *.exe" sous dos ou "ln *.exe" sous linux.


---------------
Je dors pas, j'm'économise ...
Reply

Marsh Posté le 05-06-2002 à 15:23:41   

Reply

Marsh Posté le 05-06-2002 à 15:35:06    

http://forum.hardware.fr/recherche.gif

Reply

Marsh Posté le 06-06-2002 à 00:21:52    

euh... system("ls *.cpp" ) ?? :)

Reply

Marsh Posté le 06-06-2002 à 10:15:09    

bah ca j'y avait pensé, mais il faudrait que ca me renvoi les noms des elements trouvés, pasque ca me sert a rien de les afficher, c pour un prog en vc++.

Reply

Marsh Posté le 06-06-2002 à 11:03:17    

system("ls *.cpp>pipo.pipo" );
puis parcours de pipo.pipo et récupération des noms de fichiers, sans oublier d'effacer pipo.pipo à la fin du programme (pour parcours du fichier fais une recherche)

Reply

Marsh Posté le 06-06-2002 à 11:07:20    

tu crees un pipe et tu lis la sortie de ls par l'entrée standard de ton programme

Reply

Marsh Posté le 06-06-2002 à 20:48:08    

c possible sous unix/linux, mais sous windows ?


---------------
Je dors pas, j'm'économise ...
Reply

Marsh Posté le 06-06-2002 à 21:25:37    

ca existe aussi mais je ne sais pas si les fonctions sont les mêmes (pipe,open,dup,close)

Reply

Marsh Posté le 06-06-2002 à 23:33:04    

plus proprement : findfirstfile, findnextfile

Reply

Marsh Posté le 11-06-2002 à 00:16:07    

Et hop!
recherche n'importe quel type de fichier(s ), cette fonction stock dans une liste (qui est une ListBox en MFC) les noms des fichiers.
Pour avoir un truc en C pur il suffit de changer les CString en char*,les Format par des strcpy,les +=/+ par des strcat et compagnie et d'ajouter le tout dans un char** ou une liste chaînée ou.... au choix

Code :
  1. void Cherche(const char *Catalogue, const char *FichierCherche)
  2. {
  3. CString s=Catalogue,str;
  4. char chemin[100];
  5. long hFile;
  6. struct _finddata_t c_file;
  7. CString point=".." , dpoint=".";
  8. /*----------------------recherche du fichier chercher----------------------*/
  9. _chdir(Catalogue);
  10. _getcwd(chemin,100);
  11. m_list.AddString(chemin);
  12. hFile=_findfirst(FichierCherche,&c_file);
  13. if(hFile!=-1)
  14. {
  15.  if(c_file.name!=point && c_file.name!=dpoint)
  16.  {
  17.   str.Format("    %s",c_file.name);
  18.   m_list.AddString(str);
  19.  }
  20. }
  21. while(_findnext(hFile,&c_file)==0)
  22. {
  23.  if(c_file.name!=point && c_file.name!=dpoint)
  24.  {
  25.   str.Format("    %s",c_file.name);
  26.   m_list.AddString(str);
  27.  }
  28. }
  29. _findclose(hFile);
  30. /*-------------------------reherche de repertoire--------------------------*/
  31. hFile=_findfirst("*.*",&c_file);
  32. while(_findnext(hFile,&c_file)==0)
  33. {
  34.  if(c_file.name!=point && c_file.name!=dpoint)
  35.  {
  36.   if(c_file.attrib==0x10)
  37.   {
  38.    s+="\\";
  39.    s+=c_file.name;
  40.    Cherche(s,FichierCherche); /*recherche dans le nouveau reprtoire*/
  41.    _chdir(Catalogue);
  42.    s=Catalogue;
  43.   }
  44.  }
  45. }
  46. _findclose(hFile);


 
la recursivité résoud comme toujours des problèmes apparemment difficile...
 
 
exemple d'appel: void Cherche( "C:\\" , "*.cpp" )


Message édité par weblook$ le 06-11-2002 à 00:22:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed