URGENT : fonction listing repertoire sous linux

Signaler
Messages postés
3
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
7 novembre 2004
-
Messages postés
3
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
7 novembre 2004
-
Salut à tous!

Je souhaite intégrer dans un programme une fonction qui permette de lister le contenu d'un repertoire en affichant les fichiers contenus dans les sous-répertoires. La fonction doit etre compatible linux, donc avec dirent.h

C'est vraiment urgent, je vous remercie de votre aide!

4 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Salut,
Pour ton problème, j'ai une solution alternative à te proposer.
Ton programme demande le chemin du repertoire, ensuite il genere un script shell qu'il sauvegarde dans un fichier du genre :

cd monrep
ls > sortie.txt
...

Puis ton programme éxécute le script, puis en sortie tu récupere un fichier sortie.txt ou il y aura tout le contenu du repertoire.

Ca a l'avantage de te faire un code simple n'utilisant que <stdio.h> qui est standard.

Shell
Messages postés
3
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
7 novembre 2004

Le problème c'est qu'il peut y avoir des sous repertoires.... J'arrive à lister le contenu d'un repertoire, mais il ne fait pas la différence entre un fichier et un dossier! Et il faudrait qu'il parcours le sous répertoire afin d'afficher aussi les fichiers... Je pense qu'il faudrait jouer avec la récursivité... Je file mon code et si qqn peut ajouter un peu de récursivité, ca m'aiderait enormément!

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

int main (int argc, char *argv[])
{
  DIR *dirp;
  struct dirent *entry;

  switch (argc) {
  case 2 :
    dirp = opendir (argv[1]);
    if (dirp == NULL) {
      fprintf(stderr,"ne sait pas ouvrir %s \n",argv[1]);
      return 0;
    }
    
    for(entry=readdir(dirp);entry!=NULL;entry = readdir(dirp)) {
      if (entry->d_name[0] != '.')
printf ("%s\n",entry->d_name);
}

    closedir(dirp);
    break;
  default :
    fprintf(stderr,"Usage : myls dir_name \n");
    break;
  }
  return 0;
}
Messages postés
92
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
22 février 2006

tu as juste a faire une fonction qui prend comme parametre le dossier a lister, cette fonction liste le dossier, trouve les dossiers et reappel cette meme fonction, avec comme argument le subdirectorie
c'est une facon de faire si ca peut t'aider
Messages postés
3
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
7 novembre 2004

je suis d'accord que c'est une bonne methode, mais le pb c'est que je ne sais pas reconnaitre un fichier d'un dossier sous linux!! j'ai deja appelé récursivement la fonction mais il bloque quand c'est un fichier!