GList ayant toujours la même valeur
Bonjour
Voici mon problème.
Je lis un fichier ligne par ligne et je récupère ces lignes pour les stocker dans une GList (liste chaînée de la glib) et les placer dans un GtkComboBox :
Code:
1 2 3 4 5 6 7 8 9
|
GList *list=NULL;
char tmp[16];
//Bla bla
while(fgets(tmp, 16, file)) {
rom = g_locale_to_utf8(tmp, strlen(tmp)-1, NULL, NULL, NULL);
list = g_list_append(list, rom);
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), rom);
} |
Ce qui est surprenant c'est que la ComboBox est correct avec le nombre attendu d'éléments ainsi que leur nom. Mais la GList contient aussi le nombre d'éléments attendus mais ne contient que la première ligne du texte. Si mon fichier était :
ma liste contient 3 fois toto 8O
A quoi est dû cette bizarrerie ?
Merci de vos réponses !
@++
Re: [GTK] GList ayant toujours la même valeur
Citation:
Envoyé par GLDavid
e par ligne et je récupère ces lignes pour les stocker dans une GList (liste chaînée de la glib) et les placer dans un GtkComboBox :
Code:
1 2 3 4 5 6 7 8 9
|
GList *list=NULL;
char tmp[16];
//Bla bla
while(fgets(tmp, 16, file)) {
rom = g_locale_to_utf8(tmp, strlen(tmp)-1, NULL, NULL, NULL);
list = g_list_append(list, rom);
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), rom);
} |
Je ne connais pas GTK, mais si tu modifie 'list' à chaque fois, ça signifie que la tete de liste est modifiée, ce qui est contre les principes de bases de l'utilisation des listes chainées. Dans la boucle, je verrais plutôt :
Code:
1 2 3 4 5 6 7 8 9
|
if (list == NULL)
{
list = g_list_append (list, rom);
}
else
{
(void) g_list_append (list, rom);
} |
Re: [GTK] GList ayant toujours la même valeur
Citation:
Envoyé par Emmanuel Delahaye
Je ne connais pas GTK, mais si tu modifie 'list' à chaque fois, ça signifie que la tete de liste est modifiée
:nono: list n'est pas le pointeur de tête mais un pointeur sur un élément de la liste (dans ce cas, celui après lequel il faut insérer le nouveau maillon), le pointeur sur la tête doit rester une donnée privée (l'utilisateur n'a pas à y toucher).
Re: [GTK] GList ayant toujours la même valeur
Citation:
Envoyé par gege2061
Citation:
Envoyé par Emmanuel Delahaye
Je ne connais pas GTK, mais si tu modifie 'list' à chaque fois, ça signifie que la tete de liste est modifiée
:nono: list n'est pas le pointeur de tête mais un pointeur sur un élément de la liste (dans ce cas, celui après lequel il faut insérer le nouveau maillon), le pointeur sur la tête doit rester une donnée privée (l'utilisateur n'a pas à y toucher).
Et donc, quelle serait la solution à mon problème ?
Merci pour vos réponses.
@++