Partage
  • Partager sur Facebook
  • Partager sur Twitter

Error : expected expression before 'ligneTab'

    22 mai 2017 à 16:31:23

    Bonjour à tous, je suis en rhétorique et j'ai un projet qui est de créer un programme en c qui fonctionne comme une bibliothèque ( prêt de livre,...) mais j'ai un probleme.

    Code::Blocks me met "expected expression before 'ligneTab' " et je ne comprends pas, voici le code :

    printf("\nNom: ");
    gets(ligneTab[j].nom);
    printf("Prenom: ");

    Cette partie de code se trouve dans un module et non dans un mail, avez-vous des idées d'où cela pourrait venir en sachant que la ligne du milieu est déclarée comme ligne d'un tableau dans un autre module et que chaque module est déclaré comme variable globale au début du programme ?

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2017 à 17:59:23

      Bonjour

      Est tu sur du type de nom

      gets() attend un*char ou un char[XX].

      Si on pouvait voir la declaration

      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2017 à 18:07:30

        Voici la déclaration ( que j'ai faite dans une structure ) :

        typedef struct 
        {
            int ID;
            char nom[50];
            char prenom[50];
            char titre_livre[50];
            int CP_ville;
        
        }ligneTab[15];

         Et voici une autre ligne où je l'utilise ( dans un autre module ) :

        for(i=0; i<15; i++)ligneTab[i].nom=-1;





        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2017 à 18:32:45

          Ta declaration n'est pas valable

          Tu declared'abord une structure puis ton tableau

          typedef struct structure maStructure;
          
          maStructure tab[10];



          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2017 à 18:38:51

            J'ai suivi ton conseil, j'ai donc mis ça :

            typedef struct structure maStructure;
            {
                int ID;
                char nom[50];
                char prenom[50];
                char titre_livre[50];
                int CP_ville;
            
            }maStructure ligneTab[15];

            Mais maintenant l'erreur se trouve a la deuxieme ligne que je viens de te fournir et dit " expected identifier or '(' before '{' token "

            • Partager sur Facebook
            • Partager sur Twitter
              22 mai 2017 à 18:40:35

              Enlève le typedef :

              WilliamVanHaute a écrit:

              Voici la déclaration ( que j'ai faite dans une structure ) :

              typedef struct 
              {
                  int ID;
                  char nom[50];
                  char prenom[50];
                  char titre_livre[50];
                  int CP_ville;
              }ligneTab[15];

              Et gets() est obsolète, de plus il serait préférable d'affecter NULL au lieu de -1.

              -
              Edité par ASW_ 22 mai 2017 à 18:43:39

              • Partager sur Facebook
              • Partager sur Twitter
                22 mai 2017 à 18:44:52

                Merci de ta réponse,

                top ça marche mais j'ai un autre problème maintenant, "error: incompatible types when assigning to type 'char[50]' from type 'void *' "

                for(i=0; i<15; i++)ligneTab[i].nom=NULL;



                -
                Edité par williamvh7 22 mai 2017 à 18:49:46

                • Partager sur Facebook
                • Partager sur Twitter
                  22 mai 2017 à 18:48:09

                  EDIT: trop tard

                  -
                  Edité par thetui 22 mai 2017 à 18:52:46

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 mai 2017 à 18:58:20

                    WilliamVanHaute a écrit:

                    Merci de ta réponse,

                    top ça marche mais j'ai un autre problème maintenant, "error: incompatible types when assigning to type 'char[50]' from type 'void *' "

                    for(i=0; i<15; i++)ligneTab[i].nom=NULL;

                    Autant pour moi, j'ai dit n'importe quoi, dans ma tête nom était un pointeur et non un tableau ^^, donc non fait plutôt ceci, à la place de ta boucle :

                    memset(ligneTab[i].nom, 0, 50);

                    -
                    Edité par ASW_ 22 mai 2017 à 18:59:54

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 mai 2017 à 19:00:53

                      D'accord, je vais me renseigner sur la fonction  memset et je reviens par ici après ;)

                      Voila, je viens de me renseigner et ça marche mais si j'ai une ligne qui est un code postal ( int ) je fais comment ?

                      -
                      Edité par williamvh7 22 mai 2017 à 19:04:07

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 mai 2017 à 19:07:14

                        WilliamVanHaute a écrit:

                        Si j'ai une ligne qui est un code postal ( int ) je fais comment ?

                        Une ligne de ? Je n'ai pas compris ^^

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 mai 2017 à 19:12:49

                          C'est bon en fait, ça marche aussi par contre maintenant des que je lance le programme il plante à ce moment ci :

                          int main()
                          {
                              printf("Test1");
                              Tab(); // pour generer les lignes du tableau
                              printf("Test2");


                          Il va afficher Test1 puis cracher! Voici ma fonction Tab() :

                          void Tab()
                          {
                              int i;
                              memset(ligneTab[i].nom, 0, 50); // créé une ligne du tableau pour les noms ( membre ) -- memset(*str, int c, size_t n) *str = ou ca va l'écrire, c = la valeur écrite, taille de ce qu'on écrit
                              memset(ligneTab[i].prenom, 0, 50); // créé une ligne du tableau pour les prénoms ( membre )
                              memset(ligneTab[i].CP_ville, 0, 50); // créé une ligne du tableau pour les villes ( membre )
                              memset(ligneTab[i].titre_livre, 0, 50); // créé une ligne du tableau pour les livres ( livres )
                              // création du tableau
                              strcpy(ligneTab[0].ID, "1. ");
                              strcpy(ligneTab[1].ID, "2. ");
                              strcpy(ligneTab[2].ID, "3. ");
                              strcpy(ligneTab[3].ID, "4. ");
                              strcpy(ligneTab[4].ID, "5. ");
                              strcpy(ligneTab[5].ID, "6. ");
                              strcpy(ligneTab[6].ID, "7. ");
                              strcpy(ligneTab[7].ID, "8. ");
                              strcpy(ligneTab[8].ID, "9. ");
                              strcpy(ligneTab[9].ID, "10. ");
                              strcpy(ligneTab[10].ID,"11. ");
                              strcpy(ligneTab[11].ID,"12. ");
                              strcpy(ligneTab[12].ID,"13. ");
                              strcpy(ligneTab[13].ID,"14. ");
                              strcpy(ligneTab[14].ID,"15. ");
                          
                          }






                          -
                          Edité par williamvh7 22 mai 2017 à 20:00:41

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Error : expected expression before 'ligneTab'

                          × 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