URGENT : fonction listing repertoire sous linux

davidprog77 Messages postés 3 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 7 novembre 2004 - 7 nov. 2004 à 14:46
davidprog77 Messages postés 3 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 7 novembre 2004 - 7 nov. 2004 à 20:19
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

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
7 nov. 2004 à 15:04
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
0
davidprog77 Messages postés 3 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 7 novembre 2004
7 nov. 2004 à 15:09
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;
}
0
cs_flatou Messages postés 92 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 22 février 2006
7 nov. 2004 à 19:25
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
0
davidprog77 Messages postés 3 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 7 novembre 2004
7 nov. 2004 à 20:19
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!
0
Rejoignez-nous