J'ai une petite question de Lead Architect à vous poser. Dans le but d'apprendre un peu à utiliser un peu la GLib, j'ai écrit le bout de code suivant pour tester les listes chainées :*
#include <stdio.h>
#include <glib.h>
int cmpfunc(unsigned short int *p1, unsigned short int * p2) {
if(*p1 > *p2) return 1;
else return -1;
}
int main(void) {
gushort compteur;
gushort maxcount;
gushort nombre;
GSList *maListe = NULL;
printf("Combien de nombres voulez vous saisir ? ");
scanf("%d", &maxcount);
for(compteur=0; compteur<maxcount; compteur++) {
printf("\nNombre %d ? ", compteur+1);
scanf("%d", &nombre);
//maListe = g_slist_insert_sorted(maListe, &nombre, (GCompareFunc) cmpfunc);
}
return 0;
}
pour saisir une liste de nombres à placer dans une liste chainée...
Or, j'obtiens toujours un truc du style :
(gdb) run
Starting program: /home/yves/glibTests/insertSorted
Combien de nombres voulez vous saisir ? 5
Nombre 1 ? 3
Program exited normally.
(gdb)
Je désespère... et je vais me lancer dans le Java si ça continue !!!
# probleme avec les gushort
Posté par Toto . Évalué à 1.
Chez moi ton code fait le meme effet, alors que
marche nickel. Peut etre que le for n'aime pas les (gu)short ... Je dis ca, mais je suis loin d'etre un Lead Architect :)
PS : c'est chiant qu'il saute des lignes comme ca., ca fait pas propre.
# Ta mere en short ...
Posté par Mathieu Pillard (site web personnel) . Évalué à 3.
# warning gcc
Posté par 007 . Évalué à 2.
fichier.c:XX: attention : format int, arg type différent (arg 2)
Ce sont tes scanf qui déconnent.
[^] # Re: warning gcc
Posté par samds . Évalué à 1.
- toujours compiler avec -Wall
- ne jamais utiliser scanf()
# ça marche :o)
Posté par Yves Dessertine . Évalué à 1.
Effectivement, ça marche beaucoup mieux avec des %hd. Je me doutais que ça venait du scanf parce que la boucle se faisait correctement lorsque je l'enlevais ! (D'ailleurs, d'après la page man de scanf, c'est plutot %hu pour des unsigned short int -- le "h" étant pour des short si j'ai bien compris)
Et merci aussi pour l'option -Wall, que je ne connaissais pas et qui est d'un grand secours. Elle devrait être activée par défaut :)
# Documente toi
Posté par TazForEver . Évalué à 1.
2) le format n'est pas bon ->'%h'
3) ton utilisation de GSList est mauvaise. déjà ta fonction ne respecte pas le bon prototype. Conforme toi à la documentation. Après, il te faut soit alouer chaque nombre que tu mets dans ta liste, soit utiliser GINT_TO_POINTER
RTFM en gros :D
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.