C语言中的一个分段错误

C语言中的一个分段错误,c,segmentation-fault,C,Segmentation Fault,我正在创建一个C程序,将列表实现到一个二进制文件中,编译后我收到了一个分段错误。 这是我的代码: #include <stdio.h> #include <string.h> #include <stdlib.h> #define LONG_NP 30 struct Personne { char nomPre[LONG_NP+1]; char sexe ; float taille, poids ; }; str

我正在创建一个C程序,将列表实现到一个二进制文件中,编译后我收到了一个分段错误。 这是我的代码:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>


#define LONG_NP 30

struct Personne {

    char nomPre[LONG_NP+1];

    char sexe ;

    float taille, poids ;

};


struct Elem {

    struct Personne pers ;

    struct Elem * suivant ;

};


typedef struct Elem * pointeur ;
typedef struct Elem Element;

void lire(FILE * aLire, struct Personne * P) {

    struct Personne unePers ;

    fgets(unePers.nomPre, LONG_NP+1, aLire) ;

    fscanf(aLire,"%c%f%f\n", &unePers.sexe, &unePers.taille,

                  &unePers.poids);

    *P = unePers;

}



void creerFIFO(pointeur * P) {



    pointeur laListe = NULL, tempo, presentement;



    FILE * aLire = fopen("metrique.tp3", "r");

    while (! feof(aLire)) {

        tempo = (pointeur) malloc ( sizeof (struct Elem));

        lire(aLire, &tempo->pers);

        if (laListe == NULL)

              laListe = tempo ;

        else

              presentement->suivant = tempo;



        presentement = tempo;

    }

    fclose(aLire);

    if (laListe) presentement->suivant = NULL;

    *P = laListe;

}



void afficher(pointeur liste, char ordre[]) {

    printf("Contenu de la liste en ordre %s\n", ordre);

    while (liste) {

        printf("%s %c % 7.2f %8.1f\n", liste->pers.nomPre,

            liste->pers.sexe, liste->pers.taille, liste->pers.poids);

        liste = liste->suivant;

    }

}



void creerBinaire( pointeur liste, char * nomFile) {

    FILE * aCreer = fopen(nomFile, "wb");

    int nbOctets = sizeof(struct Personne);

    if(!aCreer)
        printf("Fichier pas ouvert\n");

    while (liste) {

        fwrite(&liste->pers, nbOctets, 1, aCreer);

        liste = liste->suivant;

    }

    fclose(aCreer);

    printf("Fin de la creation du fichier binaire\n");

}



void relire(char nomFile[]) {

        FILE * aLire = fopen(nomFile, "rb");

        struct Personne unePers ;

        int rang = 0, nbOctets = sizeof(struct Personne);



        while ( fread(&unePers, nbOctets, 1, aLire), !feof(aLire))

            printf("%2d) %s %c % 7.2f %8.1f\n", ++rang,

                unePers.nomPre, unePers.sexe, unePers.taille, 

                    unePers.poids);



        fclose(aLire);



}




/* écrivez vos fonctions ici avec, en commentaires, le numéro de la
   question de l'examen à laquelle elles répondent.
*/


/* Question 6 */

void chercherNom(pointeur Liste, pointeur *Av, pointeur *CL, char Nom[])
{

    pointeur Avant = NULL;
    int trouve = 0;
    while (Liste && !trouve)
    {  
        if(strcmp(Nom, Liste->pers.nomPre)!=0)
        {
           Avant = Liste;
           Liste = Liste->suivant;
        }
        else
            trouve = 1;
    }

    *Av = Avant;
    *CL = Liste;
}


void Changer(struct Personne * A, struct Personne B)
{
      struct Personne Tempo = *A;

      if(strcmp(Tempo.nomPre, B.nomPre) !=0)
         strcpy(Tempo.nomPre, B.nomPre);

      if(B.sexe != ' ')
          Tempo.sexe = B.sexe;

      if(B.taille > 0 )
          Tempo.taille = B.taille;

      if(B.poids >0)
          Tempo.poids = B.poids;

      *A = Tempo;

}





void cherModif(pointeur Liste, char Nom[], struct Personne Pers)
{

    pointeur Avant, CL;
    struct Personne Tempo;


    chercherNom(Liste,&Avant, &CL,Nom);

    if(CL)
    {
        Tempo = CL->pers;
        printf("trouve %s\n",Tempo.nomPre);
        Changer(&Tempo,Pers);
        CL->pers = Tempo;
    }
    else 
        printf("pas trouve %s\n",Nom);
}



void CreerLIFO(pointeur Liste, pointeur *P, char sexevoulu)
{
    pointeur L = NULL;
    pointeur Tempo;


    while(Liste)
    {
        if(Liste->pers.sexe == sexevoulu)
        {

          Tempo = (Element *) malloc( sizeof(Element));

          Tempo->pers = Liste->pers;


          Tempo->suivant = L;

          L = Tempo;

        }


        Liste = Liste->suivant;
    }




    *P = L;
}



void main() {

/* Écrivez les déclarations des 2 nouvelles listes ici */
   pointeur ListeF, ListeM ;


   pointeur liste ;

   /* question 6 */

   struct Personne Tempo;
   char NomTempo[LONG_NP+1];
   creerFIFO(&liste);

   afficher(liste, "FIFO");

   /* Écrivez les appels de la fonctions de la 
      question 6 ici, le bon résultat sera observé
      avec la relecture de metrique.bin
   */


   strcpy(Tempo.nomPre,"BEDARD MARC-ANDRE             ");
   Tempo.sexe = 'M';
   Tempo.taille = 1.54;
   Tempo.poids = 0;

   cherModif(liste,Tempo.nomPre,Tempo);

   strcpy(NomTempo,"TREMBLAY CYLVAIN              ");

   strcpy(Tempo.nomPre,"TREMBLAY SYLVAIN              ");
   Tempo.sexe = ' ' ;
   Tempo.taille = 0;
   Tempo.poids = 0;

   cherModif(liste,NomTempo,Tempo);




   creerBinaire(liste, "metrique.bin");

   relire("metrique.bin");


   /* Écrivez les appels pour la question 7 ici */

    CreerLIFO(liste,&ListeF,'F');
    CreerLIFO(liste,&ListeM,'M');




   /* Pour tester, écrivez 2 appels de la fonction
      afficher : */
        afficher(ListeF,"LIFO");
        afficher(ListeM,"LIFO");

}

这意味着while函数有问题,我怀疑您的文件*
aLire
nullptr

在将
fopen
的返回值用于
feof
之前,应先检查其返回值。当我试图运行你的代码时,我看到了一个与你类似的错误,因为我的系统上没有“metrique.tp3”文件。 是否确实有一个(并且与尝试运行的可执行文件位于同一路径)

我无意冒犯你,但从你的代码来看,我认为你没有做过很多编码。至少不是在C/C++中。一些可能对您有帮助的提示:

  • 测试系统调用的返回变量。您应该始终这样做,尤其是当函数返回指针时
  • 在使用指针之前,请始终检查指针是否不为null
  • 初始化变量。我看到很多没有初始化的指针声明。如果不初始化指针,后续检查它是否为空指针通常是无用的,因为指针可能会得到随机值
  • 如果您分配内存(malloc、calloc等),则应该在处理完内存后将其释放。我在代码中看到了malloc(),但在任何地方都没有看到free()
  • 一个好的IDE可以帮助你很多,特别是当你开始编码的时候。如果在调试器中运行此可执行文件,它将准确显示分段错误发生的位置,并且您将能够查看所有变量的内容。在本例中,这会立即指出aLire是空指针。我不确定你在哪个平台上工作。对于windows,有一个visual studio的免费版本,其中包括您需要的所有工具。如果您在另一个平台上(或者只是不想使用microsoft的编译器),我一直喜欢使用Eclipse的CDT,但我已经使用它好几年了,所以它可能已经被其他IDE取代
  • 最后,您当然可以自由使用任何语言,但如果您使用英语作为变量和函数名,我们这些非法语国家的人更容易理解您的意图,从而帮助您

  • 我稍微修改了函数
    lire()
    , 现在它工作正常了

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    #define LONG_NP 30
    
    struct Personne {
    
        char nomPre[LONG_NP+1];
    
        char sexe ;
    
        float taille, poids ;
    
    };
    
    
    struct Elem {
    
        struct Personne pers ;
    
        struct Elem * suivant ;
    
    };
    
    
    typedef struct Elem * pointeur ;
    typedef struct Elem Element;
    
    /*___________________________________________________________________
    */
    void lire(FILE * aLire, struct Personne * p) {
    
        if(!p) {
            printf("lire: Persone *p est nulle");
            return;
        }
    
        fgets(p->nomPre, LONG_NP+1, aLire) ;
    
        fscanf(aLire,"%c%f%f\n",
               &(p->sexe), &(p->taille),&(p->poids));
    
    }
    /*___________________________________________________________________
    */
    
    
    void creerFIFO(pointeur * P) {
    
        pointeur laListe = NULL, tempo, presentement;
    
        FILE * aLire = fopen("metrique.tp3", "r");
    
        if(aLire) {
            while (! feof(aLire)) {
                tempo = (pointeur) malloc ( sizeof (struct Elem));
    
                lire(aLire, &tempo->pers);
    
                if (laListe == NULL)
                    laListe = tempo ;
                else
                    presentement->suivant = tempo;
    
                presentement = tempo;
            }
    
            fclose(aLire);
        } else {
            perror("creerFIFO");
        }
    
        if (laListe) presentement->suivant = NULL;
    
        *P = laListe;
    
    }
    
    /*___________________________________________________________________
    */
    
    void afficher(pointeur liste, char ordre[]) {
    
        printf("Contenu de la liste en ordre %s\n", ordre);
    
        while (liste) {
    
            printf("%s %c % 7.2f %8.1f\n", liste->pers.nomPre,
    
                   liste->pers.sexe, liste->pers.taille, liste->pers.poids);
    
            liste = liste->suivant;
    
        }
    
    }
    
    
    /*___________________________________________________________________
    */
    void creerBinaire( pointeur liste, char * nomFile) {
    
        FILE * aCreer = fopen(nomFile, "wb");
    
        int nbOctets = sizeof(struct Personne);
    
        if(!aCreer)
            printf("Fichier pas ouvert\n");
    
        while (liste) {
    
            fwrite(&(liste->pers), nbOctets , 1, aCreer);
    
            liste = liste->suivant;
        }
    
        fclose(aCreer);
    
        printf("Fin de la creation du fichier binaire\n");
    
    }
    
    /*___________________________________________________________________
    */
    
    void relire(char nomFile[]) {
    
        FILE * aLire = fopen(nomFile, "rb");
    
        struct Personne unePers ;
    
        int rang = 0, nbOctets = sizeof(struct Personne);
    
    
        while ( fread(&unePers, nbOctets, 1, aLire), !feof(aLire))
    
            printf("%2d) %s %c % 7.2f %8.1f\n", ++rang,
                   unePers.nomPre, unePers.sexe, unePers.taille,
                   unePers.poids);
    
    
        fclose(aLire);
    
    }
    
    /*___________________________________________________________________
    
        écrivez vos fonctions ici avec, en commentaires, le numéro de la
        question de l'examen à laquelle elles répondent.
    
        Question 6
    
    */
    void chercherNom(pointeur Liste, pointeur *Av, pointeur *CL, char Nom[]) {
    
        pointeur Avant = NULL;
        int trouve = 0;
        while (Liste && !trouve) {
            if(strcmp(Nom, Liste->pers.nomPre)!=0) {
                Avant = Liste;
                Liste = Liste->suivant;
            } else
                trouve = 1;
        }
    
        *Av = Avant;
        *CL = Liste;
    }
    
    
    /*___________________________________________________________________
    */
    
    void Changer(struct Personne * A, struct Personne B) {
        struct Personne Tempo = *A;
    
        if(strcmp(Tempo.nomPre, B.nomPre) !=0)
            strcpy(Tempo.nomPre, B.nomPre);
    
        if(B.sexe != ' ')
            Tempo.sexe = B.sexe;
    
        if(B.taille > 0 )
            Tempo.taille = B.taille;
    
        if(B.poids >0)
            Tempo.poids = B.poids;
    
        *A = Tempo;
    
    }
    
    
    
    /*___________________________________________________________________
    */
    
    void cherModif(pointeur Liste, char Nom[], struct Personne Pers) {
    
        pointeur Avant, CL;
        struct Personne Tempo;
    
    
        chercherNom(Liste,&Avant, &CL,Nom);
    
        if(CL) {
            Tempo = CL->pers;
            printf("trouve %s\n",Tempo.nomPre);
            Changer(&Tempo,Pers);
            CL->pers = Tempo;
        } else
            printf("pas trouve %s\n",Nom);
    }
    
    /*___________________________________________________________________
    */
    
    void CreerLIFO(pointeur Liste, pointeur *P, char sexevoulu) {
        pointeur L = NULL;
        pointeur Tempo;
    
    
        while(Liste) {
            if(Liste->pers.sexe == sexevoulu) {
    
                Tempo = (Element *) malloc( sizeof(Element));
    
                Tempo->pers = Liste->pers;
    
    
                Tempo->suivant = L;
    
                L = Tempo;
    
            }
    
            Liste = Liste->suivant;
        }
    
    
        *P = L;
    }
    
    /*___________________________________________________________________
    */
    
    void main() {
    
        /* Écrivez les déclarations des 2 nouvelles listes ici */
        pointeur ListeF, ListeM ;
    
    
        pointeur liste ;
    
        /* question 6 */
    
        struct Personne Tempo;
        char NomTempo[LONG_NP+1];
    
        creerFIFO(&liste);
        afficher(liste, "FIFO");
    
        /* Écrivez les appels de la fonctions de la
           question 6 ici, le bon résultat sera observé
           avec la relecture de metrique.bin
        */
    
        strcpy(Tempo.nomPre,"BEDARD MARC-ANDRE             ");
        Tempo.sexe = 'M';
        Tempo.taille = 1.54;
        Tempo.poids = 0;
    
        cherModif(liste,Tempo.nomPre,Tempo);
    
        strcpy(NomTempo,    "TREMBLAY CYLVAIN              ");
    
        strcpy(Tempo.nomPre,"TREMBLAY SYLVAIN              ");
        Tempo.sexe = ' ' ;
        Tempo.taille = 0;
        Tempo.poids = 0;
    
        cherModif(liste,NomTempo,Tempo);
    
    
        creerBinaire(liste, "metrique.bin");
    
        relire("metrique.bin");
    
    
        /* Écrivez les appels pour la question 7 ici */
    
        CreerLIFO(liste,&ListeF,'F');
        CreerLIFO(liste,&ListeM,'M');
    
    
    
        /* Pour tester, écrivez 2 appels de la fonction
           afficher : */
        afficher(ListeF,"LIFO");
        afficher(ListeM,"LIFO");
    
    }
    
    #包括
    #包括
    #包括
    #定义LONG_NP 30
    结构人员{
    char nomPre[LONG_NP+1];
    炭色;
    浮动尾翼,点;
    };
    结构元素{
    结构人员;
    结构元素*suivant;
    };
    typedef结构元素*pointeur;
    类型定义结构元素;
    /*___________________________________________________________________
    */
    无效lire(文件*aLire,结构人员*p){
    如果(!p){
    printf(“lire:Persone*p est nulle”);
    回来
    }
    fgets(p->nomPre,LONG_NP+1,aLire);
    fscanf(aLire,“%c%f%f\n”,
    &(p->sexe),&(p->taille),&(p->poid);
    }
    /*___________________________________________________________________
    */
    void creerFIFO(pointeur*P){
    指针laListe=NULL、节奏、呈现;
    文件*aLire=fopen(“metrique.tp3”,“r”);
    如果(aLire){
    而(!feof(aLire)){
    tempo=(指针)malloc(sizeof(struct Elem));
    里尔(阿里尔、节奏->佩尔);
    if(laListe==NULL)
    laListe=节奏;
    其他的
    演示->suivant=节奏;
    呈现=节奏;
    }
    fclose(aLire);
    }否则{
    perror(“creerFIFO”);
    }
    if(laListe)presentation->suivant=NULL;
    *P=laListe;
    }
    /*___________________________________________________________________
    */
    无效粘贴器(指针列表,字符顺序[]){
    printf(“按顺序排列的内容%s\n”,顺序);
    while(liste){
    printf(“%s%c%7.2f%8.1f\n”),列表->pers.nomPre,
    liste->pers.sexe,liste->pers.taille,liste->pers.poid);
    liste=liste->suivant;
    }
    }
    /*___________________________________________________________________
    */
    void creerBinaire(指针列表,字符*nomFile){
    文件*aCreer=fopen(nomFile,“wb”);
    int nbOctets=sizeof(结构人员);
    如果(!aCreer)
    printf(“Fichier pas ouvert\n”);
    while(liste){
    fwrite(&(liste->pers),nbOctets,1,aCreer);
    liste=liste->suivant;
    }
    fclose(aCreer);
    printf(“fichier binaire公司的创新财务”);
    }
    /*___________________________________________________________________
    */
    void relire(字符文件[]){
    文件*aLire=fopen(nomFile,“rb”);
    结构人员;
    int rang=0,nbOctets=sizeof(结构人员);
    while(fread(&unePers,nbOctets,1,aLire),!feof(aLire))
    printf(“%2d)%s%c%7.2f%8.1f\n“,++范围,
    unePers.nomPre,unePers.sexe,unePers.taille,
    联合国系统;
    fclose(aLire);
    }
    /*___________________________________________________________________
    埃克里维兹基金会,评论,le numéro de la
    莱克斯梅尔·雷波登特的问题。
    问题6
    */
    void cherchenom(指针列表、指针*Av、指针*CL、字符名称[]){
    pointeur Avant=NULL;
    int-trove=0;
    while(Liste&!trove){
    如果(strcmp(Nom,Liste->pers.nomPre)!=0){
    先锋=李斯特;
    Liste=Liste->suivant;
    }否则
    trouve=1;
    }
    *Av=先锋;
    *CL=李斯特;
    }
    /*___________________________________________________________________
    */
    无效更改器(结构人员*A、结构人员B){
    结构人员节奏=*A;
    if(strcmp(Tempo.nomPre,B.nomPre)!=0)
    strcpy(Tempo.nomPre,B.nomPre);
    如果(B.sexe!='')
    节奏性=节奏性;
    如果(B.taille>0)
    Tempo.taille=B.taille;
    如果(B.poid>0)
    Tempo.poids=B.poids;
    *A=节奏;
    }
    /*_
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    #define LONG_NP 30
    
    struct Personne {
    
        char nomPre[LONG_NP+1];
    
        char sexe ;
    
        float taille, poids ;
    
    };
    
    
    struct Elem {
    
        struct Personne pers ;
    
        struct Elem * suivant ;
    
    };
    
    
    typedef struct Elem * pointeur ;
    typedef struct Elem Element;
    
    /*___________________________________________________________________
    */
    void lire(FILE * aLire, struct Personne * p) {
    
        if(!p) {
            printf("lire: Persone *p est nulle");
            return;
        }
    
        fgets(p->nomPre, LONG_NP+1, aLire) ;
    
        fscanf(aLire,"%c%f%f\n",
               &(p->sexe), &(p->taille),&(p->poids));
    
    }
    /*___________________________________________________________________
    */
    
    
    void creerFIFO(pointeur * P) {
    
        pointeur laListe = NULL, tempo, presentement;
    
        FILE * aLire = fopen("metrique.tp3", "r");
    
        if(aLire) {
            while (! feof(aLire)) {
                tempo = (pointeur) malloc ( sizeof (struct Elem));
    
                lire(aLire, &tempo->pers);
    
                if (laListe == NULL)
                    laListe = tempo ;
                else
                    presentement->suivant = tempo;
    
                presentement = tempo;
            }
    
            fclose(aLire);
        } else {
            perror("creerFIFO");
        }
    
        if (laListe) presentement->suivant = NULL;
    
        *P = laListe;
    
    }
    
    /*___________________________________________________________________
    */
    
    void afficher(pointeur liste, char ordre[]) {
    
        printf("Contenu de la liste en ordre %s\n", ordre);
    
        while (liste) {
    
            printf("%s %c % 7.2f %8.1f\n", liste->pers.nomPre,
    
                   liste->pers.sexe, liste->pers.taille, liste->pers.poids);
    
            liste = liste->suivant;
    
        }
    
    }
    
    
    /*___________________________________________________________________
    */
    void creerBinaire( pointeur liste, char * nomFile) {
    
        FILE * aCreer = fopen(nomFile, "wb");
    
        int nbOctets = sizeof(struct Personne);
    
        if(!aCreer)
            printf("Fichier pas ouvert\n");
    
        while (liste) {
    
            fwrite(&(liste->pers), nbOctets , 1, aCreer);
    
            liste = liste->suivant;
        }
    
        fclose(aCreer);
    
        printf("Fin de la creation du fichier binaire\n");
    
    }
    
    /*___________________________________________________________________
    */
    
    void relire(char nomFile[]) {
    
        FILE * aLire = fopen(nomFile, "rb");
    
        struct Personne unePers ;
    
        int rang = 0, nbOctets = sizeof(struct Personne);
    
    
        while ( fread(&unePers, nbOctets, 1, aLire), !feof(aLire))
    
            printf("%2d) %s %c % 7.2f %8.1f\n", ++rang,
                   unePers.nomPre, unePers.sexe, unePers.taille,
                   unePers.poids);
    
    
        fclose(aLire);
    
    }
    
    /*___________________________________________________________________
    
        écrivez vos fonctions ici avec, en commentaires, le numéro de la
        question de l'examen à laquelle elles répondent.
    
        Question 6
    
    */
    void chercherNom(pointeur Liste, pointeur *Av, pointeur *CL, char Nom[]) {
    
        pointeur Avant = NULL;
        int trouve = 0;
        while (Liste && !trouve) {
            if(strcmp(Nom, Liste->pers.nomPre)!=0) {
                Avant = Liste;
                Liste = Liste->suivant;
            } else
                trouve = 1;
        }
    
        *Av = Avant;
        *CL = Liste;
    }
    
    
    /*___________________________________________________________________
    */
    
    void Changer(struct Personne * A, struct Personne B) {
        struct Personne Tempo = *A;
    
        if(strcmp(Tempo.nomPre, B.nomPre) !=0)
            strcpy(Tempo.nomPre, B.nomPre);
    
        if(B.sexe != ' ')
            Tempo.sexe = B.sexe;
    
        if(B.taille > 0 )
            Tempo.taille = B.taille;
    
        if(B.poids >0)
            Tempo.poids = B.poids;
    
        *A = Tempo;
    
    }
    
    
    
    /*___________________________________________________________________
    */
    
    void cherModif(pointeur Liste, char Nom[], struct Personne Pers) {
    
        pointeur Avant, CL;
        struct Personne Tempo;
    
    
        chercherNom(Liste,&Avant, &CL,Nom);
    
        if(CL) {
            Tempo = CL->pers;
            printf("trouve %s\n",Tempo.nomPre);
            Changer(&Tempo,Pers);
            CL->pers = Tempo;
        } else
            printf("pas trouve %s\n",Nom);
    }
    
    /*___________________________________________________________________
    */
    
    void CreerLIFO(pointeur Liste, pointeur *P, char sexevoulu) {
        pointeur L = NULL;
        pointeur Tempo;
    
    
        while(Liste) {
            if(Liste->pers.sexe == sexevoulu) {
    
                Tempo = (Element *) malloc( sizeof(Element));
    
                Tempo->pers = Liste->pers;
    
    
                Tempo->suivant = L;
    
                L = Tempo;
    
            }
    
            Liste = Liste->suivant;
        }
    
    
        *P = L;
    }
    
    /*___________________________________________________________________
    */
    
    void main() {
    
        /* Écrivez les déclarations des 2 nouvelles listes ici */
        pointeur ListeF, ListeM ;
    
    
        pointeur liste ;
    
        /* question 6 */
    
        struct Personne Tempo;
        char NomTempo[LONG_NP+1];
    
        creerFIFO(&liste);
        afficher(liste, "FIFO");
    
        /* Écrivez les appels de la fonctions de la
           question 6 ici, le bon résultat sera observé
           avec la relecture de metrique.bin
        */
    
        strcpy(Tempo.nomPre,"BEDARD MARC-ANDRE             ");
        Tempo.sexe = 'M';
        Tempo.taille = 1.54;
        Tempo.poids = 0;
    
        cherModif(liste,Tempo.nomPre,Tempo);
    
        strcpy(NomTempo,    "TREMBLAY CYLVAIN              ");
    
        strcpy(Tempo.nomPre,"TREMBLAY SYLVAIN              ");
        Tempo.sexe = ' ' ;
        Tempo.taille = 0;
        Tempo.poids = 0;
    
        cherModif(liste,NomTempo,Tempo);
    
    
        creerBinaire(liste, "metrique.bin");
    
        relire("metrique.bin");
    
    
        /* Écrivez les appels pour la question 7 ici */
    
        CreerLIFO(liste,&ListeF,'F');
        CreerLIFO(liste,&ListeM,'M');
    
    
    
        /* Pour tester, écrivez 2 appels de la fonction
           afficher : */
        afficher(ListeF,"LIFO");
        afficher(ListeM,"LIFO");
    
    }