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

 C Discussion :

Problème avec qsort (structure complexe)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 11
    Par défaut Problème avec qsort (structure complexe)
    Bonjour,

    Après plusieurs heures de recherche toujours pas de solution, je me rends compte que je ne suis pas aussi à l'aise avec les pointeurs que je ne pensais..

    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
     
    /* 
       Un fichier a :
       - un nom 
       - un descripteur de fichier
       - un tableau de fichier ou NULL si ce n'est pas un répertoire
    */
    struct file {
      char* name;
      int fd;
      struct t_files* son;
    };
     
    /*
      un tableau de fichiers 
      - sa taille 
      - un tableau de pointeur vers des fichiers 
    */
    struct t_files {
      struct file** t;
      int size;
    };
    Je souhaite trier selon le nom, pour cela j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int struct_cmp_by_name(const void* a, const void*b ){
      struct file *ia = (struct file*)a;
      struct file *ib =  (struct file*)b;
      return strcmp(ia->name, ib->name);
    }
     
    int main(void) {
      struct t_files* res;
      /* fonction pour remplissage res (aucun problème de ce côté) */
      qsort (?, ??, ???, struct_cmp_by_name);
    }
    J'ai tenté de mettre différents paramètres sans succès.

    Merci d'avance pour votre aide

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Pourquoi souhaites-tu faire un tableau de structures puisque cette structure contient déjà un tableau ?

  3. #3
    Membre habitué
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 11
    Par défaut
    parce que j'en ai besoin pour stocker dedans quelques fichiers ! mais ce n'est pas ça ma question, ce que je veux savoir ,c'est comment faire le tri de " res " selon le " name "

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Si tu veux stocker quelques fichiers dedans, pourquoi un tableau de tableaux et non simplement un tableau ? En fait, ça a à avoir avec ta question parce que le premier paramètre de qsort est le tableau à trier :
    Or, si res est un tableau de structures contenant chacune un tableau, il faut que tu lui précises laquelle ces structures il doit trier. En effet, ta fonction de comparaison compare deux fichiers, qsort te servira donc à trier un tableau de fichier. C'est le premier paramètre. Le second sera le nombre d'éléments de ce tableau (la structure le contient). Le troisième est la taille d'un élément (sizeof pourra t'aider).

  5. #5
    Membre habitué
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 11
    Par défaut
    je voudrais trier le tableau qui est dans "res " c'est à dire : res->t
    selon le champ "name", c'est pour un projet, j'utilise cette structure dans mes différentes fonctions (environ 1000 lignes de code) sans changer la structure, je peux réussir à faire appel à qsort ?


    Merci pour votre aide

  6. #6
    Membre habitué
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 11
    Par défaut
    c'est la structure qui me semblait la plus évident, un tableau de fichiers c'est la taille du tableau et un pointeur vers un tableau de pointeurs, je vois Bktero ce que tu veux dire, j'ai testé la fonction qsort sur plusieurs structures plus simples, avec différentes fonctions de comparaisons pour bien comprendre mais pour lui donner le bon argument pour ma structure là c'est plus compliqué.. comment lui dire ce qui est un tableau de fichiers ? je pensais que res->t était correct, mais non..

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/01/2008, 13h18
  2. Problème avec les structures et gets!
    Par anis_el_madani dans le forum C
    Réponses: 11
    Dernier message: 23/07/2007, 00h57
  3. Problème avec une structure
    Par titux dans le forum C
    Réponses: 5
    Dernier message: 22/07/2007, 16h26
  4. Problème avec une structure
    Par Pierre.g dans le forum C
    Réponses: 4
    Dernier message: 30/12/2006, 12h22
  5. Probléme avec une structure
    Par astragoth dans le forum C++
    Réponses: 3
    Dernier message: 25/04/2006, 20h31

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