/* Création d'un type structuré adapté aux données : */
typedef struct
{
    char nom[20];
    short int jour;
    char mois[10];
    short int annee;
} T_ANNIV;
void main(void)
{
    FILE* fic ;
    char ligne[81];
    T_ANNIV pers;
    /* Ouverture du fichier (en lecture texte) : */
    fic = fopen("essai.dat", "rt") ;
    if (fic==NULL)
    {
        puts("Pb d'ouverture du fichier essai.dat !");
        exit(0);
    }
    /* Lecture du fichier par fgets+sscanf (la fin de fichier est atteinte quand fgets renvoie NULL) : */
    while ( fgets( ligne, 81, fic) != NULL )
    {
        if (sscanf(ligne,"%s%hd%s%hd", pers.nom, &pers.jour, pers.mois,
                   &pers.annee) == 4) /* on s'assure de la validité des 4 données */
        {
            printf("\n nom: %s ", pers.nom ) ; /* traitement = simple affichage ici */
            printf("\n date naiss: %2hd %s %hd\n",pers.jour, pers.mois, pers.annee);
        }
        else
            puts("Pb de lecture avec sscanf (format de ligne incorrect ?)") ;
    }
    fclose( fic ) ;
}
