void main(void)
{
    FILE* fic;
    char ligne[81]; // pour mémoriser la ligne lue dans le fichier
    short nb_lignes_lues, nb_val_lues ; // compteurs pour le test
    char nom[15];
    short age=21;
    double taille=1.61; // pour mémoriser les données lues
// ouverture du fichier (qui doit exister) en accès BINAIRE et en lecture :
    fic = fopen("exemple_lecture.txt", "rt");
    if (fic==NULL)
    {
        puts("Pb d'ouverture du fichier exemple.txt !");
        exit(0) ;
    }
    /******************* on saute les lignes d'en-tête (qui commencent toutes par $) ****************/
// Remarquez que le nombre de lignes de l'en-tête n'est pas connu à l'avance, ni imposé à l'utilisateur.
    while (fgets(ligne, 81, fic)!=0 && ligne[0]=='$'); // NULL si fin fichier atteinte.
    /*********************************** lecture des données ****************************************/
// pour chaque ligne : on lit toute la ligne (fgets), puis on l'analyse (sscanf).
    nb_lignes_lues = 0 ; // pour l'affichage de test
    while (fgets (ligne, 81, fic) != NULL) // on reboucle tant que la fin du fichier n'est pas atteinte
    {
        nb_lignes_lues++ ;
// ANALYSE avec sscanf de la ligne lue précedemment par fgets :
        nb_val_lues = sscanf (ligne, "%s%*s%*s%hd%*s%*s%*s%lf", nom, &age, &taille);
// %*s sert à ignorer UN MOT (= suite de caractères différents de Espace, tabulation, Entrée)
        if (nb_val_lues!=3)
            printf (" !!!! PROBLEME Ligne %2hd !!!!\n", nb_lignes_lues);
// on doit trouver 3 valeurs utiles par ligne
        else // affichage POUR LE TEST :
            printf("(Donnees extraites Ligne %2hd) %15s %2hd %5.2lf\n",
                   nb_lignes_lues,nom, age, taille);
    }
    fclose( fic );
}
