Bonjour à tous,

Voici quelques jours que j'essaye de faire un programme (assez classique) utilisant des structures, des tableaux et donc des mallocs.

Voici mes structures :
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
typedef struct{
    char rue[MAX_CHAR];
    char ville[MAX_CHAR];
    int num;
    int cp;
}T_Adresse;
 
typedef struct
{
    char matricule[MAX_CHAR];
    char nom[MAX_CHAR];
    char prenom[MAX_CHAR];
    double tabCotes[5];
    double moyennePourcentage;
    T_Adresse adr;
}T_Etudiant;
 
typedef struct{
    char nomCours[MAX_CHAR];
    int ponderation;
}T_Cours;
 
typedef struct{
    int nbEtu;
    T_Etudiant * classe;
}T_Classe;
 
// Definition d'une annee/section (1TI)
typedef struct{
    char nomAnneeSection[MAX_CHAR];
    int nbClasses;
    char *nomClasse; // Tableau contenant le nom des cours. (1TM1)
    int nbCoursParEtudiant;
    T_Cours *tabCours;
    T_Classe *tabClasse;
}T_AnneeSection;
Je créer un tableau de T_AnneeSection comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
T_AnneeSection * tabAnneeSection = NULL; // Ecole (tabAnnneeSection)
Que je passe à la fonction afficherMenuGlobal :
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
void afficherMenuGlobal(T_AnneeSection * tab)
{
    tab = malloc(INCREMENTALLOC * sizeof(T_AnneeSection));
 
    int choix = 0, nbrAnneeSection = 0, i = 0;
 
    printf("1. Charger le tableau d'annee/section.\n");
    printf("2. Creer une annee/section\n\n");
 
    scanf("%d", &choix);
 
    if(choix == 2)
    {
        for(i = 0 ; i < 2 ; i++)
        demanderInfo(tab);
    }
 
 
 
}
Je veux donc créer 1 anneeSection dans le tableau tab.
Grâce à la méthode suivante :
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
 
/*Permet de créer 1 anneeSection */
void demanderInfo(T_AnneeSection * anneeSection)
{
    int i = 0;
 
    printf("Nom (ex : 1TI) : ");
    fflush(stdin);
    gets(anneeSection->nomAnneeSection);
    printf("Nombre de Classes : ");
    fflush(stdin);
    gets(anneeSection->nbClasses);
 
    anneeSection->tabClasse = (T_Classe *)malloc(anneeSection->nbClasses * sizeof(T_Classe));
 
    for(i = 0 ; i < anneeSection->nbClasses ; i++)
    {
        printf("\t Nom de la classe %d (ex : 1TM1) : ", i+1);
        fflush(stdin);
        gets(anneeSection->nomClasse[i]);
    }
 
    printf("Nombre de cours par etudiant : ");
    fflush(stdin);
    scanf("%d", anneeSection->nbCoursParEtudiant);
 
    anneeSection->tabCours = malloc(anneeSection->nbCoursParEtudiant * sizeof(T_Cours));
 
    for(i = 0 ; i < anneeSection->nbCoursParEtudiant ; i++)
    {
        printf("\t Nom du cours %d : ", i+1);
        gets(anneeSection->tabCours[i].nomCours);
        printf("\t Ponderation de ce cours : ");
        scanf("%d", anneeSection->tabCours[i].ponderation);
    }
 
}
Mais il y'a une erreur d’exécution, dès que je demande le nom des classes dans la première boucle for de demanderInfo().

De plus, j'envoie tab dans demanderInfo, et non tab[i], car j'ai une erreur de compilation ... Pourquoi ?

Désolé pour ce long énoncé, mais je ne voyais pas comment expliquer autrement ...

Un énorme merci à ceux qui prendront la peine d'y jeter un coup d'oeil.

Cordialement,

Mornor.