IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

POSIX C Discussion :

Lister contenu d'un répertoire


Sujet :

POSIX C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut Lister contenu d'un répertoire
    bonjour a tous
    voila, j'essaie d'ecrire un programme pour recuperer la racine de cetains fichiers de mon repertoire dans une tableau dynamique en C,

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Trois fonctions à utiliser : opendir, readdir et closedir.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    Mon premier poste a ete tronque

    Bonjour a tous

    Voila, j'essaie d'ecrire un programme pour recuperer la racine de cetains fichier de mon repertoire dans une tableau dynamiaque en C, mais je n'y pas trop
    Ca me dit tjrs segmentation fault

    voila le code que j'ai écrit, e espérant qu'il y ait quelqu'un qui puisse m'aider la dessus, c'est tres urgent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    int main(int argc, char *argv[] )
    {
    char **liste_files;
    int Nb_files;
    int i,status;
     
    int ld, lw, L;
    char *racine, *ext;
    char *extdata=".ima";
    char *extweight=".weight.ima";
    char *nom;
    statut=0;
     
    struct dirent *lecture;
    DIR *rep;
     
    rep = opendir(argv[1]);
     
    Nb_files=0;
    liste_files=NULL;
    while ((lecture = readdir(rep)))
    {
    L=strlen(lecture->d_name);
    if(L>lw)//peut etre un fichier weight
    {
    ext=str_sub(nom, L-lw,L-1);
    if(strcmp (extweight, ext)==0)//fichier weight
    {
    printf("fichier weight: extension %s, racine: %s\n",ext, str_sub(lecture->d_name, 0,L-lw-1));
     
    }
    else
    {
    ext=str_sub(nom, L-ld, L-1);
    if(strcmp (extdata, ext)==0)//fichier data
    {
    Nb_files++;
    liste_files = (char**)realloc(liste_files,Nb_files*sizeof(char*));
    strcpy(liste_files[Nb_files-1],str_sub(lecture->d_name, 0,L-ld-1));
    }
     
    }
     
    }
    else
    {if(L>ld)
    {
    ext=str_sub(nom, L-ld, L-1);
    if(strcmp (extdata, ext)==0)//fichier data
    {
    Nb_files++;
    liste_files = (char**)realloc(liste_files,Nb_files*sizeof(char*));
     
    liste_files[Nb_files-1]=str_sub(nom, 0,L-ld-1);
    }
    }
    }
    }
    closedir(rep);
     
    printf("nombre de fichier data, d%n", Nb_files);
     
    for (ld=0;ld<Nb_files;ld++)
    printf("nom fichier : %s\n",liste_files[ld]);
    return status;
    }
    SVP,quelqu'un pourrait-il m'aider a trouver la solution!!

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Bonjour,

    je regarde pas tant que y a pas la balise code autour

  5. #5
    Membre éprouvé Avatar de yakamoneye
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Par défaut
    Salut,
    man scandir

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    j'ai verifie mon code sans les troncatures que je deverais faire, et ca marche, le probleme je pense me vient de cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    char *str_sub (const char *s, unsigned int start, unsigned int end)
    {
      char *new_s = NULL;
     
      if (s != NULL && start < end)
      {
        new_s = malloc (sizeof (*new_s) * (end - start + 2));
        if (new_s != NULL)
        {
          int i;
     
          for (i = start; i <= end; i++)
          {
            new_s[i-start] = s[i];
          }
          new_s[i-start] = '\0';
        }
        else
        {
          fprintf (stderr, "Memoire insuffisante\n");
          return NULL;
        }
      }
      return new_s;
    }
    je n'arrive pas a voir le probleme pour le monmnet sachant que ca marchait bien avant

    si vous pouvez le regarder , peut etre que vous verrez la fautes plutot que moi!!

    merci d'avance

  7. #7
    Membre éprouvé Avatar de yakamoneye
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Par défaut
    if (new_s != NULL)
    n'est jamais vérifiée puisque tu l'initialise à NULL.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lister contenu d'un répertoire (très simple)
    Par storm85 dans le forum Général Python
    Réponses: 1
    Dernier message: 15/12/2010, 17h10
  2. Lister le contenu d'un répertoire présent dans le classpath
    Par kaptainflam dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2007, 16h08
  3. Réponses: 5
    Dernier message: 30/08/2006, 18h23
  4. Lister le contenu d'un répertoire
    Par rob_57 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/10/2005, 19h16
  5. Lister le contenu d'un répertoire distant
    Par dody dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo