Pb lors de type pointeur

salut,
le probleme c'est qd compile ca m affiche attention assignement de type pointeur incompatible jvois pas ce que je pourrais mettre.
Si qqn pourrais m aider ???( j'ai mis en gras la ou ya le pb )

voila mes structure :

typedef struct compagnie{
char* nom;
char acronyme[3];
Liste_avions avions_compagnie;
}Compagnie;

typedef struct avion{
char identifiant[6];
int carburant;
int consommation;
char heure_decollage[4];
struct Compagnie *compagnie;
}Avion;

voila mes fonction :
Avion *Creer_Avion(char idf[6] , int conso, int car, char heure[4],Compagnie *cp)
{
Avion *av;

av=Alloue_Avion();
strcpy((*av).identifiant,idf);
(*av).carburant=car;
(*av).consommation=conso;
strcpy((*av).heure_decollage,heure);
av->compagnie=cp; /****Modification (*av).compagnie=cp; ****/
return (av);
}

Cellule_avion* Creer_Cellule_Avion(Avion av,Cellule_avion *suiv,Cellule_avion *prec, Cellule_avion *suiv_at)
{
Cellule_avion* cel_av;
cel_av=Alloue_Cellule_Avion();
cel_av->avion=av;
(cel_av).Suivant_compagnie=suiv;
(*cel_av).Precedent_compagnie=prec;
(cel_av)->Suivant_attente=suiv_at;


return (cel_av);

}
Configuration: Linux Debian
Mozilla 1.8.0.13

10 réponses

  • Votes
  • Date
  • Date décroissante
  1. Il manque la définition de la structure Cellule_avion dans ton code !
    1. Contributeur
      Et avec les majuscules inversées :
      typedef struct Compagnie{
      char* nom;
      char acronyme[3];
      Liste_avions avions_compagnie;
      }compagnie;
      
      typedef struct Avion{
      char identifiant[6];
      int carburant;
      int consommation;
      char heure_decollage[4];
      struct Compagnie *compagnie;
      }avion;
      
      


      ca donne quoi ? (ca fait un bail que j'ai pas fais de C mais il me semble que si tu veux faire appel à une structure (struct Compagnie *compagnie;), il faut que la syntaxe soit respectée.

      Une remarque : Liste_avions, c'est quoi ce type là ? Tu n'as pas mis tout le code ou tu as oublié de déclarer ce type de structure ?
      1. la voila

        typedef struct cellule_avion{
        Avion avion;
        struct Cellule_avion* Suivant_compagnie;
        struct Cellule_avion* Precedent_compagnie;
        struct Cellule_avion* Suivant_attente;
        }Cellule_avion;

        typedef Cellule_avion* Liste_avions;
        1. si j inverse ca affiche plus de pb les structures c'est le prof qui nous les a donné deja faite normalement a ce niv ya pas de pb jpense
          1. Tes structures pointent vers d'autres structures, qui elle même pointent vers les premières...

            Il faut donc définir les types dans un premier temps, puis expliciter les structures :

            #include <string.h>

            typedef struct compagnie Compagnie;
            typedef struct avion Avion;
            typedef struct cellule_avion Cellule_avion;
            typedef Cellule_avion* Liste_avions;

            struct compagnie
            {
            char* nom;
            char acronyme[3];
            Liste_avions avions_compagnie;
            };

            struct avion
            {
            char identifiant[6];
            int carburant;
            int consommation;
            char heure_decollage[4];
            Compagnie *compagnie;
            };

            struct cellule_avion
            {
            Avion avion;
            Cellule_avion* Suivant_compagnie;
            Cellule_avion* Precedent_compagnie;
            Cellule_avion* Suivant_attente;
            };

            Avion *Alloue_Avion();
            Cellule_avion *Alloue_Cellule_Avion();

            Avion *Creer_Avion(char idf[6] , int conso, int car, char heure[4],Compagnie *cp)
            {
            Avion *av;

            av=Alloue_Avion();
            strcpy((*av).identifiant,idf);
            (*av).carburant=car;
            (*av).consommation=conso;
            strcpy((*av).heure_decollage,heure);
            av->compagnie=cp; /****Modification (*av).compagnie=cp; ****/
            return av;
            }

            Cellule_avion* Creer_Cellule_Avion(Avion av,Cellule_avion *suiv,Cellule_avion *prec, Cellule_avion *suiv_at)
            {
            Cellule_avion* cel_av;
            cel_av=Alloue_Cellule_Avion();
            cel_av->avion=av;
            cel_av->Suivant_compagnie=suiv;
            cel_av->Precedent_compagnie=prec;
            cel_av->Suivant_attente=suiv_at;

            return cel_av;
            }

            [ce code compile avec gcc 4.1.2/debian etch mais bien entendu il manque des choses à l'édition de liens]
            1. Au passage, remplace les (*av). par des av-> c'est plus lisible...
              1. Ce que j'ai dit ? Tu as pris le code que j'ai mis ? Chez moi il compile bien !
                1. Contributeur
                  C'est qu'il y a peut etre d'autres erreurs ailleurs dans un bout de code qu'il n'as pas donné ?
                  1. Peut-être... Dédé tu pourrais envoyer tout ton code ou y-a-t'il des parties confidentielles ?