pnouv->tot = ( *sp)->tot;
pas besoin l´etoile et prioritaire sur la fleche mais je dois avouer que ton truc est bizarre :
- sp ds des lignes de codes est cense renvoye la valeur de la donne pointer
par exemple si je declare
int *a=(*int)maloc(sizeof(int));
en gros j´ai mis 5 ds a
L´utilite de l´etoile ds le cas me semble inutile(et fausse en fait)
en effet
sp->tot va renvoyer une strucure du type tot si sp est un pointeur sinon tu utilise sp.tot si sp est une variable. Aucune raison d´utiliser une etoile ici.
En plus ds le malloc on met ( *VOL) et pas VOL*
ohunshadok
Posté le 03 avril 2005 à 11:45:26
j´ai un programme basé sur un chainage, chainé de maniere croissante en fonction du temps enregistré dans la structure.
Dans cette fonction, il sagit de modifié le temps d´un maillon et de le replacer au bon endroit.
voila comme cela se présente, je simplifierai les petites choses pour cibler le probleme qui se pose.
void changement(TAB T[])
{
/ / il n´y a pas de probleme de déclaration de variable
/ / on me donne des parametres qui me disent quel maillon modifié
sp = RECHERCHE(/*j´envoie les parametres*/)
/ / cette fonction me renvoit un double pointeur positionnant le maillon qui doit etre modifié
/ / je saute les erreurs eventuelles
/ / VOICI MON PROBLEME
pnouv = ( VOL *) malloc ( sizeof(VOL));
/ /correction de ma part
pnouv->tot = sp->tot;
pnouv->lib= sp->lib;
/ / je lis les nouvelles valeurs a modifier, par exemple X etY
pnouv->ref = X;
pnouv->heure = Y;
/
mais ce serait bien que tu donnes tout le code de la fonction je pense que tu as fais des erreurs au niveau de la gestion de la memoire