TP #1 : Structures

Objectifs

  • Savoir déclarer un type structure en C, déclarer des variables de ce nouveau type et utiliser ces variables dans des fonctions C.

Contexte: Nous travaillerons sur un exemple simple de gestion d’un annuaire de personnes. Chaque personne est représentée par une structure contenant les informations suivantes:

  • son nom, prenom et numéro de téléphone (telephone dans la structure) sous la forme de chaînes de caractères de taille statiquement fixée.
  • sa date de naissance (nommé date_de_naissance dans la structure) sous la forme d’une structure jour, mois, annee (entiers non signés). Un annuaire de personnes sera représenté par un tableau de MAX_PERSONNES (constante valant 100, par exemple).

Questions du TP

Code existant

Pour démarrer ce TP vous pouvez vous baser sur le squelette suivant

  • reponse.h pour déclarer vos structures et fonctions
#ifndef __ANNU1_H__
#define __ANNU1_H__

struct date_t
{
};

struct personne_t
{
};

struct annuaire_t
{
};

struct date_t lire_date             ();
void          affiche_date          (struct date_t);
int           lire_personne         (struct personne_t *pers);
void          affiche_personne      (struct personne_t pers);
void          construire_annuaire   (struct annuaire_t *annu);
void          affiche_annuaire      (struct annuaire_t a);
#endif
  • reponse.c pour définir vos fonctions
#include "reponse.h"
#include <stdio.h>
#include <string.h>
  • main.c pour appeler et tester vos fonctions.
#include "reponse.h"
#include <stdio.h>

int main ()
{
    // Votre code ici
    return 0;
}

Questions

  1. Dans le fichier reponse.h, définir le type date_t permettant de représenter une date de naissance.
  2. Dans le fichier reponse.c, inclure le fichier reponse.h et écrire une fonction lire_date qui permet de lire une date au clavier au format et retourne une valeur de type date_t.
     jj
     mm
     aaaa
    
  3. Écrire une fonction affiche_date qui affiche une date passée en paramètre. Le format d’affichage devra être jj/mm/aaaa.
  4. Définir le type personne_t dans le fichier reponse.h.
  5. Écrire une fonction lire_personne qui permet de lire les données d’une personne au clavier. Après récupération des informations de Personne (nom, prénom,…) à l’aide de la fonction scanf, cette fonction retournera la valeur entière 0.
  6. Écrire une fonction affiche_personne qui affiche une personne p passée en paramètre. Tester. Le format d’affichage sera:
     Nom Prénom
     jj/mm/aaaa num_telephone
    
  7. Définir le type annuaire_t dans reponse.h
  8. Déclarer un annuaire dans la fonction main.
  9. Écrire une fonction construire_annuaire qui remplit la structure annuaire_t en lisant un certain nombre de personne_t que vous avez fixé.
  10. Écrire une fonction qui affiche toutes les personnes d’un annuaire donné avec leur indice de rangement (le nom de la fonction sera affiche_annuaire). Le format d’affichage sera:
     XX. Nom Prénom
     jj/mm/aaaa num_telephone