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 :

segmentation fault sur qsort


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut segmentation fault sur qsort
    Bonjour,
    Apres de longue recherche en vain je me desespere et me resigne a poster.
    Voici mon probleme, au lancement de mon programme je recupere des donnees dans ma bdd et les insert dans un tableau structure. ayabt besoin de gagner un maximum de temps d'exec sur la bdd je ne tri mes donnees seulement apres avec qsort. Cependant me voici avec un 'segmentation fault'.
    Voici mon code :
    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
     
    typedef struct {
      PIOSTRING type_name;
      PIOLONG type_id;
    } FUSE_TYPE;
     
    FUSE_TYPE *Type_id;
    FUSE_TYPE *Type_name;
     
    static int cmpfuse_type_id(const void *p1, const void *p2)
    {
      FUSE_TYPE *tp1= (FUSE_TYPE *) p1;
      FUSE_TYPE *tp2= (FUSE_TYPE *) p2;
      return tp1->type_id - tp2->type_id;
    }
    static int cmpfuse_type_name(const void *p1, const void *p2)
    {
      FUSE_TYPE *tp1= (FUSE_TYPE *) p1;
      FUSE_TYPE *tp2= (FUSE_TYPE *) p2;
      return tp1->type_name - tp2->type_name;
    }
     
    static void *FUSETYPE(){
     
        char command[4096];
        _PGresult *res=NULL;
        PIOMEnvironment *MyEnv=NULL;
        PIOErr MyErr=0;
        MyErr = PIOOpenDB("",&MyEnv);
        if (MyErr!=0) return (void*)-ENOENT;
     
        sprintf(command,"select type_name, type_id from dmc_types;");
     
        MyErr= _DBGetCommand(&res,command,MyEnv->ConnectionSec); //execution req
     
        int i;
     
        Nb_Type_id=_PQntuples(res); //nb occurences
        // initialisation de la taille de mes 2 tableaux
        Type_id = (FUSE_TYPE *) _PIOMALLOC(Nb_User_id*sizeof(FUSE_TYPE));
        Type_name = (FUSE_TYPE *) _PIOMALLOC(Nb_User_id*sizeof(FUSE_TYPE));
        // remplissage des tableaux
        for (i=0;i<Nb_User_id;i++) { 
    	strcpy(Type_id[i].type_name, _PQgetvalue(res,i,0));
    	strcpy(Type_name[i].type_name, _PQgetvalue(res,i,0));	
    	Type_id[i].type_id=atol(_PQgetvalue(res,i,1));
    	Type_name[i].type_id=atol(_PQgetvalue(res,i,1));
        }
     
        qsort(Type_id, Nb_Type_id, sizeof(FUSE_TYPE), cmpfuse_type_id);
        qsort(Type_name, Nb_Type_id, sizeof(FUSE_TYPE), cmpfuse_type_name);
        return 0;
    }
     
    int main(int argc, char *argv[])
    {
        umask(0);
        FILE *fuselog=fopen("/tmp/fuse-log","w"); 
        fclose(fuselog);
     
        FUSETYPE();
     
        return fuse_main(argc, argv, &dmcfs_oper, NULL);
    }
    Si jamais une ame charitable peut m'aider
    (desole pour les faute d'accent, je travail sur un clavier qwerty).
    Merci par avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut
    Idiot que je suis ... il suffit que je post pour trouver mon erreur, j'en aurais mis du temps.
    une erreur de copier/coller

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    Citation Envoyé par cicco Voir le message
    Idiot que je suis ... il suffit que je post pour trouver mon erreur, j'en aurais mis du temps.
    une erreur de copier/coller
    Bravo, mais fais-en profiter les autres, à présent. :-)

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

Discussions similaires

  1. Segmentation fault sur mon serveur
    Par zoullou dans le forum Administration système
    Réponses: 2
    Dernier message: 06/04/2007, 10h17
  2. Segmentation fault sur script PHP
    Par zoullou dans le forum Langage
    Réponses: 1
    Dernier message: 03/04/2007, 09h32
  3. Segmentation fault sur new[] et delete[]
    Par Don ViP dans le forum C++
    Réponses: 4
    Dernier message: 30/04/2006, 00h29
  4. Segmentation Fault sur un fclose
    Par Beush dans le forum C
    Réponses: 9
    Dernier message: 30/11/2005, 19h30
  5. Segmentation fault sur un gethostbyname ?
    Par Mitox dans le forum Réseau
    Réponses: 9
    Dernier message: 25/11/2005, 16h17

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