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

Bibliothèque standard C Discussion :

tri par ordre alphabétique des noms de fichier contenu dans un dossier


Sujet :

Bibliothèque standard C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Points : 12
    Points
    12
    Par défaut tri par ordre alphabétique des noms de fichier contenu dans un dossier
    bonjour,

    Actuellement, j'utilise les fonctions de la librairie dirent pour récupérer les nom des fichiers contenus dans un dossier.
    Cependant la librairie me livre les noms de fichiers dans l'ordre chronologique et pour ma part j'aimerai les avoir par ordre alphabétique.
    ma contrainte serait de le pas être obligé de les recopier dans une variable (je peux avoir beaucoup de fichier et ça prendrait beaucoup trop de place en mémoire de tous les retenir) et j'aimerai tant que possible éviter de faire des appels système.

    connaissez-vous une solution à mon problème ?
    (une option dans la librairie dirent ?, une autre manière de faire ?)

    merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    la fonction qsort, en mettant dans la fonction de comparasion le signe de strcmp..

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    perdu.
    Les fonctions de dirent me fournissent pas un tableau de char* contenant les nom des fichiers nécessaire au qsort.
    les fonctions de dirent (readdir) me fournissent les nom des fichiers un par un à la même adresse

    et comme dis plus haut
    ma contrainte serait de le pas être obligé de recopier les noms de fichier dans une variable
    une (autre) solution ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    je peux avoir beaucoup de fichier et ça prendrait beaucoup trop de place en mémoire de tous les retenir
    A moins d'avoir un PC préhistorique, stocker des noms de fichier en mémoire n'est qu'une goutte d'eau. Exemple : stocker en mémoire 1000 noms de fichiers de 100 caractères chacun n'occupe que ~100ko, c'est-à-dire rien du tout.

    A mon avis, tu ne peux pas échapper au stockage en mémoire, sinon je ne vois pas comment faire.

    Après, pour le tri, il y a la méthode des tableaux ou des listes chainées.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 668
    Points
    5 668
    Par défaut
    Lai,
    Citation Envoyé par ulnar Voir le message
    perdu.
    Les fonctions de dirent me fournissent pas un tableau de char* contenant les nom des fichiers nécessaire au qsort.
    les fonctions de dirent (readdir) me fournissent les nom des fichiers un par un à la même adresse

    et comme dis plus haut


    une (autre) solution ?
    Oui : t'en passer.

    Il faudra bien qu'à un moment ou un autre tu utilises des variables (sinon, où vas-tu mettre le résultat de ce tri ?)

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Citation Envoyé par ulnar Voir le message
    perdu.
    Les fonctions de dirent me fournissent pas un tableau de char* contenant les nom des fichiers nécessaire au qsort.
    les fonctions de dirent (readdir) me fournissent les nom des fichiers un par un à la même adresse
    En réfléchissant deux secondes tu te rends bien compte qu'il va falloir que tu enregistre les infos à trier dans un tableau pour les trier, quelle que soit las méthode.

    A chaque appel à dirent tu enregistres les infos que tu veux garder, par exemple dans une liste chainée. Puis tu alloues un tableau de pointeurs vers ces données. Et tu utilises qsort() pour trier ce tableau de pointeurs.

    Ca m'énerve les personnes qui viennent poser des questions, puis prennent de haut ceux qui se donne la peine de répondre. D'autant plus quand la réponse est bonne.

Discussions similaires

  1. Classer une bibliographie par ordre alphabétique des noms
    Par GDMINFO dans le forum Bibliographies - Index - Glossaires
    Réponses: 3
    Dernier message: 16/11/2010, 16h59
  2. Recuperation des noms de fichiers contenu dans un repertoire
    Par fafabzh6 dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/10/2007, 18h45
  3. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27

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