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

GTK+ avec C & C++ Discussion :

Aide sur gchar* dans GList


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut Aide sur gchar* et structure dans GList
    Salut la communauté,

    J'ai un petit problème avec les GList. En fait je souhaite stocker dans une GList les informations dans un tableau de char (une string quoi). Je sais qu'on ne peut y adjoindre directement la variable puisqu'on ne récupère que le pointeur, donc j'essaie par allocation de mémoire, mais le programme cause une erreur de segmentation au moment de l'ajout la donnée dans la GList. Voici ce que j'ai fait pour l'instant :

    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
     
     
        gint   i = 1;
        GList *glstEntry;
     
        gchar *Store = g_strrstr (ReturnInfo, "Entrées:"); /* ReturnInfo est une gchar retournée par une fonction */
        gchar **Split = g_strsplit (Store, "\n", -1);
     
     
        while (Split[i] != '\0')
        {
    	gchar *temp  = g_malloc (strlen (Split[i]) + 1);
    	g_stpcpy (temp, (gchar *) Split[i]);
    	glstEntry = g_list_append (glstEntry, temp);
     
    	i++;
    	g_free (temp);
        }
     
        g_strfreev (Split);
    Merci pour l'aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu peux utiliser g_strdup plutôt que malloc/strlen/strcpy, ça évitera de possibles erreurs Je changerais le test de fin de boucle par (Split[i] != NULL), je trouve ça un peu plus lisible dans ce cas (vu que Split[i] n'est pas un caractère mais un pointeur). Et il faut que ta GList soit initialisée à NULL avant que tu ne l'utilises.

  3. #3
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut
    Ah, je suis un peu idiot sur le coup... j'ai mal exposé mon problème, car j'avais essayé d'ajouter une donnée dans une GList qui est elle-même contenue dans une structure. J'ai eu de curieux résultats aléatoires qui ne se produisait pas uniquement au niveau de la GList, mais qui modifiait ma variable ReturnInfo ! Très curieux comme problème... En passant par une GList temporaire cela marche.

    En tout cas merci à toi teuf !

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    La GList dans ta structure est initialement NULL? Y Tu fais probablement un truc "bizarre" avec un pointeur dans un coin si ReturnInfo se retrouve modifiée. Ton problème est résolu alors?

  5. #5
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    La GList dans ta structure est initialement NULL?
    Et bien, premier problème que j'ai rencontré avec les GList. J'initialisais à NULL dans la structure, la compilation échouait.
    Secundo, si je l'initialise en créant en une variable utilisant la structure, c'est là que je rencontrais ce problème aléatoire.

    Citation Envoyé par teuf13 Voir le message
    Y Tu fais probablement un truc "bizarre" avec un pointeur dans un coin si ReturnInfo se retrouve modifiée. Ton problème est résolu alors?
    Probable ? Je vais voir. A vrai dire, ReturnInfo est dans mon code retournée par une fonction, mais là je l'ai fait sans passer par une variable, or la variable retournée doit être libéré lorsqu'elle inusitée. Peut-être est-ce là ? Mais c'est curieux le fait d'utiliser une GList peut perturber cette variable qui sont a priori indépendante l'une de l'autre. Quel est ton avis ?

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Si tu utilises mal les pointeurs, tu peux changer n'importe quelle variable sans t'en rentre compte. Et si tu renvoies une variable locale comme valeur de retour d'une fonction, ça ne va pas marcher effectivement.

Discussions similaires

  1. [XL-2010] Aide sur graph dans excel
    Par jessfranzle dans le forum Excel
    Réponses: 1
    Dernier message: 01/08/2013, 09h14
  2. Aide sur VLOOKUP dans vba
    Par Mag555 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/08/2011, 14h35
  3. Aide sur placement dans un gridbaglayout
    Par Micke7 dans le forum Agents de placement/Fenêtres
    Réponses: 14
    Dernier message: 21/04/2010, 10h36
  4. Aide sur datagrid dans VB6/Mysql
    Par scm10 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 14/03/2009, 15h12
  5. VBA Word - Aide sur les "Retours" dans tableaux
    Par wouebmaster dans le forum VBA Word
    Réponses: 5
    Dernier message: 29/12/2005, 10h08

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