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 fonction QSORT


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Par défaut Problème fonction QSORT
    Bonjour à tous,

    Dans le cadre de la migration d'un programme PROC (C avec du SQL) d'un compilateur à un autre, je me retrouve avec un souci sur la fonction QSORT.

    Le but de cette fonction est de trier un tableau de structures.

    L'erreur de compilation se trouve sur la ligne suivante (voir fonction FsortBuffer plus bas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return strcmp (pa->wHOSTSTRING, pb->wHOSTSTRING);
    line 688.19: 1506-285 (S) The indirection operator cannot be applied to a pointer to an incomplete struct or union

    Il semblerait que le void const ne gére que des structures incomplétes (?!!).
    C'est pourtant comme cela qu'il faut faire d'après le site http://emmanuel-delahaye.developpez.com/qsort.htm (?!!).


    Appel à la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qsort (wBufferAR, sizeof wBufferAR / sizeof *wBufferAR, sizeof *wBufferAR, FsortBuffer);

    fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    static int FsortBuffer (void const *in1, void const *in2)
    {
     
       /* definir des pointeurs type's et initialise's
          avec les parametres */
       struct BUFFER_AR const *pa = in1;
       struct BUFFER_AR const *pb = in2;
     
       /* evaluer et retourner l'etat de l'evaluation (tri croissant) */
       return strcmp (pa->wHOSTSTRING, pb->wHOSTSTRING);
    }

    définition de la structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct {
        char   wCMPCODE_DEST[12+1];
        char   wCMPCODE[12+1];
        char   wDOCCODE[12+1];
        char   wDOCNUM[12+1];
        char   wDOCSTAT[1+1];
        char   wHOSTSTRING[7];
    } BUFFER_AR;

    Quelqu'un sait comment résoudre ce souci ?
    Au pire, une solution de contournement ?


    Je vous remercie d'avance!

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    struct BUFFER_AR n'est pas défini. C'est BUFFER_AR qui l'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    static int FsortBuffer (void const *in1, void const *in2)
    {
     
       /* definir des pointeurs type's et initialise's
          avec les parametres */
       BUFFER_AR const *pa = in1;
       BUFFER_AR const *pb = in2;
     
       /* evaluer et retourner l'etat de l'evaluation (tri croissant) */
       return strcmp (pa->wHOSTSTRING, pb->wHOSTSTRING);
    }

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Par défaut
    OK! Je n'aurais pas trouvé tout seul!

    Je te remercie beaucoup. Problème résolu!

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

Discussions similaires

  1. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  2. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  3. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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