Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de compréhension strucure file

Sujet résolu
    11 septembre 2019 à 17:42:33

    Bonjour,

    Je suis débutant en langage c et j'adore ce langage. Mais il y a quelque chose que je ne comprends pas sur le cour d'openclassroom sur les files.

    Je ne comprends pas pourquoi on teste si la file est nulle dans le fonction enfiler. Pouvez vous m'éclairer ?

    Merci pour votre aide.

    void enfiler(File *file, int nvNombre)
    {
        Element *nouveau = malloc(sizeof(*nouveau));
        if (file == NULL || nouveau == NULL) // Pourquoi on test si la file est nulle ici ?
        {
            exit(EXIT_FAILURE);
        }
    
        nouveau->nombre = nvNombre;
        nouveau->suivant = NULL;
    
        if (file->premier != NULL) /* La file n'est pas vide */
        {
            /* On se positionne à la fin de la file */
            Element *elementActuel = file->premier;
            while (elementActuel->suivant != NULL)
            {
                elementActuel = elementActuel->suivant;
            }
            elementActuel->suivant = nouveau;
        }
        else /* La file est vide, notre élément est le premier */
        {
            file->premier = nouveau;
        }
    }



    • Partager sur Facebook
    • Partager sur Twitter
      11 septembre 2019 à 18:05:50

      Hello,

      Faire cela évite un crash du programme ligne 12 suite au test  file->premier 

      -
      Edité par edgarjacobs 11 septembre 2019 à 18:12:10

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        11 septembre 2019 à 18:36:54

        Mais comment file pourrai être null si file -> premier différent de null ?

        On teste justement à la ligne 12 si file -> premier différent de null.

        Donc si file -> premier différent de null je ne vois pas comment file pourrai être null ?

        -
        Edité par PierreBoutier1 11 septembre 2019 à 18:39:55

        • Partager sur Facebook
        • Partager sur Twitter
          11 septembre 2019 à 18:53:00


          Rien n’empêche file d'être NULL, tu peut très bien lui avoir affecté la valeur NULL avant de l'envoyer à la fonction.

          file->premier est testé que seulement si file n'est pas NULL, et heureusement, sinon ça planterait.

          • Partager sur Facebook
          • Partager sur Twitter
            11 septembre 2019 à 19:10:59

            typedef struct s_File {
                ..... ;
                struct s_File *premier;
            } File;
            
            
            void enfiler(File *file,int nbr) {
                // ton code
            }
            
            int main(void) {
                File *tete=NULL;
            
            
                enfiler(tete,666);    // crash dans la fonction enfiler sans le test ligne 4
            
                ....
            
                return(0);
            }
            
            

            -
            Edité par edgarjacobs 11 septembre 2019 à 19:17:07

            • Partager sur Facebook
            • Partager sur Twitter

            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              11 septembre 2019 à 20:10:47

              ok merci pour vos explications.
              • Partager sur Facebook
              • Partager sur Twitter

              Probleme de compréhension strucure file

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown