Listes simplement chainees - problème de pointeurs
Bonjour,
Je débute en C et j'ai du mal avec les pointeurs enclus dans les "Typedef struct".
On doit réaliser un programme qui va gérer une collection de BD.
Les typesdef struct suivants nous sont donnés:
code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| typedef struct _un_element_series *P_un_element_series;
typedef struct _un_element_series {
char mot[30];
struct Serie_s * element;
P_un_element_series suivant;
} Un_element_series;
typedef struct _un_element_tomes *P_un_element_tomes;
typedef struct _un_element_tomes {
char mot[30];
struct Tome_s * element;
P_un_element_tomes suivant;
} Un_element_tomes;
typedef struct _un_element_auteurs *P_un_element_auteurs;
typedef struct _un_element_auteurs {
char mot[30];
char * nom;
P_un_element_auteurs suivant;
} Un_element_auteurs;
typedef struct Serie_s {
char *titre;
char *pays_parution;
int nb_parus;
P_un_element_tomes tomes;
} Une_serie;
typedef struct Tome_s {
char *titre;
P_un_element_auteurs scenaristes;
P_un_element_auteurs dessinateurs;
int no_serie;
} Un_tome; |
Il est d'abord demandé d'écrire deux fonctions qui creent une serie et un tome, ce que j'ai fait:
code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Une_serie *creer_serie(char *nom_serie, char *pays_parution, int nb_parus) {
Une_serie *serie = (Une_serie *)malloc(sizeof(Une_serie));
serie->titre=strdup(nom_serie);
//serie->pays_parution=strdup(pays_parution);
strcpy(serie->pays_parution, pays_parution);
serie->nb_parus=nb_parus;
return serie;
}
Un_tome *creer_tome(char *titre, P_un_element_auteurs scenaristes,
P_un_element_auteurs dessinateurs, int no_serie) {
Un_tome *tome = (Un_tome *)malloc(sizeof(Un_tome));
tome->titre=strdup(titre);
tome->scenaristes=scenaristes;
tome->dessinateurs=dessinateurs;
tome->no_serie=no_serie;
return tome;
} |
Est-ce correct?
Mon probleme est au niveau de la fonction ajouter_serie_a_collection:
code:
Code:
1 2 3 4 5 6 7 8
| void ajouter_serie_a_collection(P_un_element_series *collectionSeries, P_un_element_series *serie) {
assert(collectionSeries);
assert(serie);
Une_serie *serie_test=NULL;
serie_test=chercher_serie(collectionSeries,serie->element->titre);
//if(serie_test) return NULL;
//inserer_element_fin_series(collectionSeries,serie);
} |
J'essais de récupérer la valeur du titre (serie->element->titre) contenue dans le struct serie avec appel via la liste serie ramenée en 2eme argument de ajouter_serie_a_collection. La fonction chercher_serie necessite un char en deuxieme argument ainsi le titre de la serie. J'obtiens cette erreur : "request for member ‘element’ in something not a structure or union". Il y a tellement de pointeurs que je suis perdue et je ne sais pas comment retrouver la valeur titre.
J'ai egalement essayer *(serie.element)->titre et &(*(serie.element)->titre) mais rien ne marche.
Pouvez-vous m'aider?
Merci par avance