Partage
  • Partager sur Facebook
  • Partager sur Twitter

Initialiser un tableau de strucure

Sujet résolu
    6 juin 2022 à 19:01:41

    Bonjour,

    Je souhaiterai initialiser un tableau de structure mais je n'y arrive pas. En gros je voudrais qu'il n'y ait rien dans ce tableau. J'ai essayé plusieurs chose mais cela n'a pas fonctionné ou alors j'avais l'erreur : "error: variable-sized object may not be initialized".

    Je souhaiterais initialiser le tableau  "books_title_author_or_category[nbbooks]".

    #include<stdio.h>
    
    typedef struct{ // structure of the books
        char title[100];
        char author[100];
        char id_number[5];
        char category[50];
        int borrow;
    }Book;
    
    int nbbooks=31;
    
    Book books_title_author_or_category[nbbooks];

    J'espère que vous pourrez m'aider :')

    • Partager sur Facebook
    • Partager sur Twitter
      6 juin 2022 à 19:50:43

      Hello,

      Les vla ne peuvent pas être initialisées comme un tableau classique.

      Pourquoi ne pas écrire

      #define NBBOOKS 31
       
      Book books_title_author_or_category[NBBOOKS]={0};

      puisque tu connais le nombre de livres ?

      -
      Edité par edgarjacobs 6 juin 2022 à 19:54:34

      • 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

        6 juin 2022 à 19:53:32

        De mémoire, ça marche comme un tableau classique.

        Suivant ce que tu veux stocker dedans, tu peux allouer la mémoire nécéssaire. Une structure n'est rien d'autre qu'une variable que tu as créé, donc elle représente un type, comme un int, char, float etc.. La, ton type est "book". Tu peux donc déclarer un pointer de type book et lui allouer une taille.

        Donc de mémoire, tu as une erreur car tu déclare la taille de "books_title_author_or_category" avec la valeur d'une variable dans tes crochets. Essaie simplement :

        Book books_title_author_or_category[31];

        • Partager sur Facebook
        • Partager sur Twitter
          6 juin 2022 à 20:32:11

          @BetaDuCentaure: ta mémoire te fait défaut :)   Voir, par exemple ici et


          Vour aussi la norme c11, §6.7.9 point 3

          -
          Edité par edgarjacobs 6 juin 2022 à 20:45:05

          • 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

            6 juin 2022 à 20:50:44

            Oui alors normalement je ne connais pas le nombre de livres, j'ai juste écrit 31 pour l'exemple.

            Comment est ce que je pourrai allouer ce tableau ?

            • Partager sur Facebook
            • Partager sur Twitter
              6 juin 2022 à 20:53:16

              malloc()
              • 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

                6 juin 2022 à 20:59:43

                Ou calloc vu que tu veux l'initialiser à 0.
                • Partager sur Facebook
                • Partager sur Twitter
                ...
                  6 juin 2022 à 22:27:18

                  D'accord j'ai essaye ca a marche merci !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 juin 2022 à 22:43:34

                    DorianVerger a écrit:

                    D'accord j'ai essaye ca a marche merci !

                    Bonjour,

                    Sujet résolu

                    Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Initialiser un tableau de strucure

                    × 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