Pb de tableau de structure en C

Fermé
Sylvain - 29 janv. 2002 à 10:30
 diaisma - 10 avril 2009 à 11:08
Bonjour à tous,
je suis en train d'apprendre le c et j'ai un pb.
J'ai déclaré un structure:
struct eleve
{
nom[20]
prenom[20]
absences[20]
} absence

un tableau contenant ma strucure :
eleve ClasseEntiere[40];

Dans mon programme j'arrive à enregistrer plusieurs eleve (donc structure eleve dans mon tableau), mais je n'arrive à enregister que le nom, le prenom et 1 SEULE absence pour chaque eleve (avecla fonction strcpy).
Je voudrais pouvoir enegistrer plusieurs absences par eleves, mais je ne sais pas comment faire car si je veux enregistrer 20 absence, il me faudrait 20 tableaux absence[20] dans ma structure, ce qui est stupide.

On m'a dis qu'il faut utiliser un pointeur mais je ne sais pas comment l'utiliser, j'ai jamais vu ça et je n'ai rien compris au cours de comment ça marche (pas asez complet).
Es-ce que quelqu'un pourrait me faire le bout de prog qui manque (pour enregistrer plusieurs absences par eleves) ou au moins un exemple d'utilisation des pointeurs (pas avec du int, mais avec des variables char).

Merci.
A voir également:

2 réponses

pour gérer un nombre variable d'absences, par tableaux, à mon avis il faudrait utiliser une liste chainée à l'intérieur de ta structure... mais ca deviendrait un poil compliqué. Cherche un peu dans cette direction 'liste chainée' j'ai pas le temps de te faire tt un cours la dessus :)
0
tips Messages postés 5 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 5 février 2002 10
29 janv. 2002 à 15:20
Salut Sylvain ,c'est vrai que pour pouvoir gerer ton enregistrement
dans un tableau ,il faut utiliser un pointeur,qui se comportera comme un tableau ,mais lui il est dynamique ,il permet de gerer la memoire.
DECLARATION:
eleve *ClasseEntiere;
/*reservation d'espace memoire */
classeentiere=(eleve *)malloc(n*sizeof(eleve)); /*avec n nombre d'enregistrement */
/*pour lire un champ de eleve*/

scanf("%s",&*ClasseEntier.nom);
/*pour afficher*/
printf("%s",*ClasseEntier.nom);


A bientôt
0
merci et vreaiment j'ai bien compris et ça marche
0