Erreur dans malloc

Ange Angelique Messages postés 47 Statut Membre -  
Ange Angelique Messages postés 47 Statut Membre -
Bonjour,
pouvez vous me direcomment regler cette erreur que je ne comprends pas bien
I=malloc(sizeof(struct ElementPoids));

erreur: invalid conversion from void* to ElementPoids

5 réponses

loupius
 
Légère erreur du débutant.
void* malloc (int taille)
Telle est la définition de la fonction 'malloc'.
Il te faut donc écrire:
I=(ElementPoids*)malloc(sizeof(struct ElementPoids));
car je suppose que 'I' est ainsi défini: ElementPoids* I;
Bon courage.
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,
void* malloc (int taille)
Telle est la définition de la fonction 'malloc'.

Et le void* est converti implicitement vers le bon type. Tel est l'intérêt de l'apparition du void* au profit de char*.

Donc ce n'est pas une erreur :D. A moins d'utiliser un compilateur K&R Mais ça ne court pas les rues. ^^
0
Ange Angelique Messages postés 47 Statut Membre 4
 
Merci Loupius,
Désolée, je viens de lire ton message, je croyai que dès que je reçois un message ici j'ai une alerte sur ma boite, mais je crois que cette option est désactivée, quoi qu'il en soit, pour cette erreur c bon, ça a marché, merci
mais bon, la, jai un nouveau problème, il me casse vraiment la tête, je sais pas si je dois le redéfinir sur un nouveau message parce que c'est la même application mais pas le même problème,
bon je la pose comeme ici, a defaut de reponses je postule ailleurs:

Je ne comprend pas ou est le problème;
mon programme affecte un caractére a chaque noeud d'un arbre, si c'est un fils gauche il lui affecte un '0' si c'est le droit un '1'
le problème c'est que dès que je veux qu'il m'affiche ce qu'il a ffecté il me renvoie pas le meme code affecté lors du traitement, je trouve pas l'erreur, je l'ai meme déroulé manuellement, RIEN
svp aidez moi.

fonction qui affecte les caractéres:
// parcours de l'arbre en infixé et ajouter le code
void affich_infixe_croissant(ElementPoids *a)
{

if(a!=NULL)
{
affich_infixe_croissant(a->FilsDroit);

affich_infixe_croissant(a->FilsGauche);
if (a->FilsDroit!=NULL) { strcpy(a->FilsDroit->Code,"0");
printf("cest le fils droit \n\n");
printf(" -> Fils gauche %d ", a->FilsDroit->Num);
printf(" -> Code %s ", a->FilsDroit->Code);
}
if (a->FilsGauche!=NULL) {strcpy(a->FilsGauche->Code,"1");
printf("cest le fils gauche \n\n");
printf(" -> Fils droit %d ", a->FilsGauche->Num);
printf(" -> Code %s ", a->FilsGauche->Code);
}

}
}
// fonction 1 qui affiche l'arbre avec ses codes
// parcours de l'arbre en pretfixé et affichage de l'arbre

void affich_arbre(ElementPoids *a, int profondeur)
{
int i;
if(a!=NULL)
{

affich_arbre(a->FilsDroit, profondeur+1);
for(i=0;i<profondeur;i++)
printf("\t");
printf("%d %s\n",a->Num, a->Code);
affich_arbre(a->FilsGauche, profondeur+1);
}
}
// fonction2 qui affiche l'arbre

void affich_infixe_croissant2(ElementPoids *a)
{

if(a!=NULL)
{
affich_infixe_croissant2(a->FilsDroit);
affich_infixe_croissant2(a->FilsGauche);
if (a->FilsDroit!=NULL) { printf("cest le fils droit \n\n");printf(" -> Fils gauche %d ", a->FilsDroit->Num);printf(" -> Code %s ", a->FilsDroit->Code);}
if (a->FilsGauche!=NULL) {printf("cest le fils gauche \n\n");printf(" -> Fils droit %d ", a->FilsGauche->Num);printf(" -> Code %s ", a->FilsGauche->Code);}

}
}

pour les resultats, dans la fonction qui affecte les codes j'ai dans tous les fils droits des 1 et gauches des 0, mais dans les fonction d'affichage j'ai les memes valeurs de noeuds que le premiere fontion (parce que elle aussi fait de laffichage) mais des codes different.
je trouve pas l'erreur

encore merci
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,

As-tu pensé à inclure stdlib.h ?
0
Ange Angelique Messages postés 47 Statut Membre 4
 
OUI, c'est inclus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ange Angelique Messages postés 47 Statut Membre 4
 
pour plus de precision voici les resulatats, je comprends vraiement pas, les memes instructions dans 2 fonctions differentes avec les mes param dentrée donnent deux resultats differents, ou est le problèèèèèèèème, je craque:

par exemple si jappel
affich_infixe_croissant(racine) jai fils gauche 0 fils droit 1
après quand jappel affich_infixe_croissant2(racine) avec la meme racine jai fils gauche 1 fils droit 1
et quand jappel affich_arbre(racine) toujours la meme racine j'ai
fils droit 1
racine
fils gauche 1
or normalement je devrai avoir (comme dans affich_infixe_croissant'racine)):
fils droit 1
racine
fils gauche 0
0