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