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

 


Dernière réponse
Sujet : Liste de fichier en C
kaz ander #ifdef COMPIL_MS    // Microsoft only
#include <io.h>
#elseif COMPIL_LINUX  // Linux only
#include <dirent.h>
#endif
.
.
.
char* szDir[MAX_DIR_LEN];   // directory to be searched
char* szFileName[MAX_FILE_NAME]; // can be used
char* szSearchCriteria[MAX_LEN];  // search criteria
 
#ifdef COMPIL_MS    // Microsoft only
  struct _finddata_t FindResult;
  long hFileSearch;
#elseif COMPIL_LINUX  // Linux only
  DIR* pDir;
  struct dirent* pDirEntry;
  struct stat Status;
#endif
 
#ifdef COMPIL_MS   // MICROSOFT compilation
chdir(szDir);
hFileSearch = _findfirst( SearchCriteria, &FindResult );
 
while ( _findnext( hFileSearch, &FindResult ) != -1 ) // search directory for matching files
{
  printf("%s %ld\n", FindResult.name, FindResult.size);
}
 
_findclose( hFileSearch );
 
#elseif COMPIL_LINUX   // LINUX compilation
 
pDir = opendir(szDir);
if (pDir == NULL)
  return FCT_RET_ERROR;
for (pDirEntry = readdir(pDir); pDirEntry != NULL; pDirEntry = readdir(pDir))       // search directory for file entries
{
  if (stat(pDirEntry->d_name, &Status) < 0)
    fprintf("File not found\n" );
  else
    printf("%s %ld\n", szFileName = pDirEntry->d_name, Status.st_size);
}
#endif
 
****************************************************
Si tu veux faire une recherche recursive, tu dois ajouter un test sur le FindResult.attrib = _A_SUBDIR sous MS, et sous Linux tu peux ajouter un stat(szFileName, &Status) (szFileName contenant le nom du fichier) et tester avec S_ISDIR(Status.st_mode) qui renverra 1 si l'entree est un repertoire.
 
Et pis remplace les printf() par ce que tu veux pour construire ta liste (ecriture dans un fichier, dans un tableau en memoire, etc)
 
Vala je pense que ca devrait suffir :)

 

[edtdd]--Message édité par Kaz Ander--[/edtdd]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
kaz ander #ifdef COMPIL_MS    // Microsoft only
#include <io.h>
#elseif COMPIL_LINUX  // Linux only
#include <dirent.h>
#endif
.
.
.
char* szDir[MAX_DIR_LEN];   // directory to be searched
char* szFileName[MAX_FILE_NAME]; // can be used
char* szSearchCriteria[MAX_LEN];  // search criteria
 
#ifdef COMPIL_MS    // Microsoft only
  struct _finddata_t FindResult;
  long hFileSearch;
#elseif COMPIL_LINUX  // Linux only
  DIR* pDir;
  struct dirent* pDirEntry;
  struct stat Status;
#endif
 
#ifdef COMPIL_MS   // MICROSOFT compilation
chdir(szDir);
hFileSearch = _findfirst( SearchCriteria, &FindResult );
 
while ( _findnext( hFileSearch, &FindResult ) != -1 ) // search directory for matching files
{
  printf("%s %ld\n", FindResult.name, FindResult.size);
}
 
_findclose( hFileSearch );
 
#elseif COMPIL_LINUX   // LINUX compilation
 
pDir = opendir(szDir);
if (pDir == NULL)
  return FCT_RET_ERROR;
for (pDirEntry = readdir(pDir); pDirEntry != NULL; pDirEntry = readdir(pDir))       // search directory for file entries
{
  if (stat(pDirEntry->d_name, &Status) < 0)
    fprintf("File not found\n" );
  else
    printf("%s %ld\n", szFileName = pDirEntry->d_name, Status.st_size);
}
#endif
 
****************************************************
Si tu veux faire une recherche recursive, tu dois ajouter un test sur le FindResult.attrib = _A_SUBDIR sous MS, et sous Linux tu peux ajouter un stat(szFileName, &Status) (szFileName contenant le nom du fichier) et tester avec S_ISDIR(Status.st_mode) qui renverra 1 si l'entree est un repertoire.
 
Et pis remplace les printf() par ce que tu veux pour construire ta liste (ecriture dans un fichier, dans un tableau en memoire, etc)
 
Vala je pense que ca devrait suffir :)

 

[edtdd]--Message édité par Kaz Ander--[/edtdd]

R@NNIS

R@NNIS a écrit a écrit :

opendir et lstat sont tes amis ..
 
fait un man tout est clairement expliqué.  




 
au pur hasard tu ferais pas un proj du nom de TinyFtpd ? :D avec kkun ki habite avec ce code postal :D 77150 :D
 
 
demande lui car je lui ai clairement explique comment faire le listage des fichiers . pense meme lui avoir fait le code en grde partie ;)

 

[edtdd]--Message édité par R@NNIS--[/edtdd]

R@NNIS opendir et lstat sont tes amis ..
 
fait un man tout est clairement expliqué.
El_gringo tu programmes sous windows ?
tharkie

paikan a écrit a écrit :

belle culture :)  




 
on fait un club ???
 
:heink: :lol:

tharkie La nuit des temps... Barjavel, il a fait un ravage... :o
paikan belle culture :)
Phod comme il est poli le paikan...
 
 
dis, "paikan"... c en rapport avec éléa ? (si ca te dis rien c'est ke c non...)
tharkie pas encore déplacé... :D
 
ça ne saurait tarder !
paikan je me suis effectivement tromper de forums grave erreur de ma part mes excuses pour ce post déplacé
merci
Phod a mon avis, tu aurai + de reponse sur le forum programmation...
 
 
en fait tu recup la trame envoyer par le serveur ftp c ca ?
paikan J aurais bien voulu un petit coup demain sur comment faire une fonction en C qui permet de faire la liste des fichiers contenu dans un répertoire
Le but ce serait de l'implanter dans un serveur ftp sous linux afin de repondre a une commande LIST je sais que le serveur envoi cette liste sous forme de fichier en ascii par le canal de donnée mais je sais pas exactement quel format ca doit avoir
Quelqu un pourrait il maider??
Merci d 'avance

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)