[C] Liste chainée problème suivant.
Résolu/Fermé
jerémiethe7
Messages postés
152
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
27 février 2009
-
2 mai 2008 à 17:37
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 - 3 mai 2008 à 09:39
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 - 3 mai 2008 à 09:39
A voir également:
- [C] Liste chainée problème suivant.
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Liste site streaming illégal - Accueil - Services en ligne
- Liste de diffusion whatsapp - Guide
2 réponses
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
2 mai 2008 à 19:37
2 mai 2008 à 19:37
Re-bonjour ;-)
Il y a une petite chose qui n'a pas posé de problème chez moi mais je l'ai compilé avec les normes C++. Je ne suis pas sûr qu'en C ce soit valide. (je dirais après)
L'erreur principale sont les listeSMS->suivant
Message **listeSMS;
listeSMS est un double pointeur, il représente : un tableau de pointeurs (mais je ne vois pas sa taille) donc plus probablement l'adresse d'un pointeur pour qu'il soit modifiable par la fonction pour qu'elle puisse modifier éventuellement la tête de la liste.
Je pense donc à
(*listeSMS)->suivant;
Je ne suis pas le mieux placé pour voir exactement l'utilisation de la variable mais l'idée est là.
Pour le petit détail que je changerais. Je mettrais simplement un struct de plus dans la déclaration de la structure.
Je pense qu'à ce stade le typedef n'est pas encore fait donc le type Message n'est pas déclaré. Par contre le type struct Message l'est.
Un compilateur C++ accepte l'utilisation du type directement après un simple struct MonType. Si ton compilateur est strictement C et que ça lui va c'est juste que je raconte des bêtises ^^".
Voilou,
M.
Il y a une petite chose qui n'a pas posé de problème chez moi mais je l'ai compilé avec les normes C++. Je ne suis pas sûr qu'en C ce soit valide. (je dirais après)
L'erreur principale sont les listeSMS->suivant
Message **listeSMS;
listeSMS est un double pointeur, il représente : un tableau de pointeurs (mais je ne vois pas sa taille) donc plus probablement l'adresse d'un pointeur pour qu'il soit modifiable par la fonction pour qu'elle puisse modifier éventuellement la tête de la liste.
Je pense donc à
(*listeSMS)->suivant;
Je ne suis pas le mieux placé pour voir exactement l'utilisation de la variable mais l'idée est là.
Pour le petit détail que je changerais. Je mettrais simplement un struct de plus dans la déclaration de la structure.
typedef struct Message{ char SMS[tailleSMS+1]; char date[150]; char horloge[128]; struct Message *suivant; // <- Déclaration récurssive }Message;
Je pense qu'à ce stade le typedef n'est pas encore fait donc le type Message n'est pas déclaré. Par contre le type struct Message l'est.
Un compilateur C++ accepte l'utilisation du type directement après un simple struct MonType. Si ton compilateur est strictement C et que ça lui va c'est juste que je raconte des bêtises ^^".
Voilou,
M.
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
2 mai 2008 à 19:43
2 mai 2008 à 19:43
Après un petit essai, en demandant un C strict à mon compilateur il a rejeté le Message de la structure : type non défini. Il faut donc bien le "struct"
M.
M.
jerémiethe7
Messages postés
152
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
27 février 2009
32
3 mai 2008 à 09:39
3 mai 2008 à 09:39
re mahmha,
effetivement, il faut bien remettre le struct ainsi que les * devant listeSMS.
Merci du conseil encore une fois.
effetivement, il faut bien remettre le struct ainsi que les * devant listeSMS.
Merci du conseil encore une fois.