Affectation d'une valeur à un élément d'une liste chainée - C - Programmation
Marsh Posté le 25-04-2005 à 17:17:29
Je précise que mon puts(ptr) me renvoi bien la valeur désirée
Marsh Posté le 25-04-2005 à 18:23:38
c'est quoi chaine ? car ptr c'est du char * ... donc ça n'est pas la même chose.
Marsh Posté le 25-04-2005 à 19:08:07
Sinan a écrit : Je précise que mon puts(ptr) me renvoi bien la valeur désirée |
Peut-être mais vu que tu fais :
ptr = strtok(NULL, sep); |
juste après, c'est plus la bonne valeur que tu stockes.
(bon après y a toujours le problème de ces "chaine" )
Marsh Posté le 25-04-2005 à 19:33:23
vi, mais là il faut que tu fasses une copie, pas une affectation avec ton type chaine, genre :
strcpy( c->nom, ptr);
Marsh Posté le 25-04-2005 à 20:08:10
Sinan a écrit : Voici mon code : |
Pour avoir la version qui compile, faut payer ?
|
Marsh Posté le 25-04-2005 à 20:36:30
Emmanuel Delahaye a écrit : Pour avoir la version qui compile, faut payer ?
|
Question a moitié HS, tu compile avec quoi comme parametres ?
-Ansi -pedantic -Wall ?
Marsh Posté le 25-04-2005 à 20:46:44
didier1809 a écrit : |
Un peu plus que ça!
-W -Wall -O2 -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wredundant-decls -Wnested-externs -Winline -Wparentheses -Wno-missing-braces
Marsh Posté le 25-04-2005 à 20:51:17
Emmanuel Delahaye a écrit : Un peu plus que ça! |
Je note ca dans un coin merci.
Marsh Posté le 26-04-2005 à 10:19:34
cricri_ a écrit : vi, mais là il faut que tu fasses une copie, pas une affectation avec ton type chaine, genre : |
C'est ce que j'ai pensé à faire au début aussi. Mon programme compile bien, mais j'ai "votre programme a généré une erreur, il va être fermé..." quand j'execute ma fonction.
Code :
|
Marsh Posté le 26-04-2005 à 10:21:29
Emmanuel Delahaye a écrit : Pour avoir la version qui compile, faut payer ? |
Je veux bien te filer tout mon code, mais il est assez conséquent
Je t'envoi un mp
Marsh Posté le 26-04-2005 à 11:20:48
Sinan a écrit : C'est ce que j'ai pensé à faire au début aussi. Mon programme compile bien, mais j'ai "votre programme a généré une erreur, il va être fermé..." quand j'execute ma fonction. |
Mais c'est autre problème, en tout cas c'est la bonne méthode.
Après cela peut venir d'un débordement, essaye de vérifier ça ou bien de ne copier que ce que peut contenir ton type chaine par exemple.
Marsh Posté le 26-04-2005 à 11:23:26
Qu'est ce que tu apelles débordement ?
Marsh Posté le 26-04-2005 à 11:27:38
ton tableau fait une certaine taille, mais à aucun moment tu ne vérifie à la copie que tu ne dépasses pas cette taille, d'où le débordement possible si la source est plus grande que la destination
Marsh Posté le 26-04-2005 à 17:12:18
même en faitsant un
Code :
|
mon programme plante.
C'est le c->truc qui m'embete mais je sais pas pourquoi
Marsh Posté le 26-04-2005 à 17:16:00
Sinan a écrit : mon programme plante. |
Normal :
Code :
|
En gros :
1. Tu alloues de la mémoire pour "c" avec malloc
2. Ligne suivante, tu écrases ton beau pointeur qui pointe vers ta zone mémoire allouée par NULL
Deux effets, donc :
1. Tu as alloué de la mémoire pour rien et perdu le moyen de la désallouer ensuite
2. "c" pointe vers NULL, donc tout appel à c->variable te redirigera vers une zone mémoire inexistante = plantage
Solution : efface la ligne "c = tete_cand;"
EDIT : pour t'aider à tracer ce genre de souci plus tard, n'hésite pas à examiner l'adresse de tes pointeurs sous ton debugger favori.
Marsh Posté le 25-04-2005 à 17:15:49
Bonjour, je suis en train d'écrire une fonction qui récupére des éléments stockés dans un fichier sous la forme :
0001|tutu|toto|0850505050|tutu@toto.com|001
0002|pupu|popo|0860606060|pupu@popo.com|001
Je cherche à insérer ces valeurs dans ma liste simplement chainée.
Voici mon code :
Mon soucis est au niveau de l'affectation de ptr à un élément de la liste chainée : c->num_secteur = ptr;
Erreur :
incompatible types in assignment
Je ne sais pas comment affecter ptr à c->quelquechose. A chaque fois que j'ai eu à affecter des variables à un élément de ma liste, c'était après avoir récupéré cette variable avec un scanf.
Je suis sur que la soluce est conne, mais jvois po
---------------
Cptn.Barberousse