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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager