Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme avec les acolades qui forme une erreur

Sujet résolu
    26 juin 2019 à 19:55:19

    Bonjour j'ai un problème, c'est le suivant, je ne comprend pas pourquoi "{"  est une erreur, sa me le fais assez souvent quelqu'un pour m’éclairer?

    -
    Edité par Elioras 26 juin 2019 à 22:07:39

    • Partager sur Facebook
    • Partager sur Twitter
      26 juin 2019 à 19:59:04

      Bonjour ! L'erreur peut venir de la ligne ou des lignes qui précède(nt). Par exemple tu as peut-être ouvert plus d'accolades que tu n'en as fermées, ou le contraire.

      Le mieux est de nous montrer la partie du programme concernée par le message d'erreur.

      • Partager sur Facebook
      • Partager sur Twitter
        Staff 26 juin 2019 à 20:35:25

        Bonjour,

        Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
        Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

        Pour plus d'informations, nous vous invitons à lire les règles générales du forum

        Insertion des images

        Le forum dispose d’un outil pour poster des images directement dans vos messages via ce bouton : . Vous avez la possibilité d’y mettre soit une image depuis votre ordinateur, soit un lien direct si l’image est déjà sur Internet. Utilisez toujours l’outil d’intégration d’images du site, c’est la seule manière d’afficher des images dans vos messages.

        Mauvais titre

        Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

        Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

        De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

        Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

        Pour modifier votre titre, éditez le premier message de votre sujet.

        (titre originel : probleme [help])

        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2019 à 21:46:16

          -
          Edité par Elioras 26 juin 2019 à 22:05:21

          • Partager sur Facebook
          • Partager sur Twitter
            26 juin 2019 à 22:15:56

            Salut,

            Tu as oublié un point-virgule à la ligne 6, et il te manque la fonction principale :

            int main(int argv, char* argc[]) {
                int resultat = 5 + 4;
                printf("5 + 4 = %d", resultat);
                return 0;
            }

            -
            Edité par vanaur 26 juin 2019 à 22:16:30

            • Partager sur Facebook
            • Partager sur Twitter

            Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

              26 juin 2019 à 22:17:05

              Lu'

              Quel cours suis-tu ?

              - A la fin de int resultat... il manque un ;

              - De plus int resultat... n'est pas dans une fonction

              - Il n'y a pas de fonction main(int argc, char* argv[]) { code }

              Quand tu dis que ça te le fait souvent cette erreur, que veux-tu dire par là ? ça marche des fois ? je comprends pas.

              -
              Edité par poweRiCube 26 juin 2019 à 22:17:26

              • Partager sur Facebook
              • Partager sur Twitter
                26 juin 2019 à 23:38:29

                Bonsoir,

                En fait, le problème n'est pas vraiment l'accolade, c'est le fait que tu l'as ouverte sans aucune raison ...

                Généralement, la première accolade est celle qui délimite la fonction "main", qui est indispensable pour que ton programme fonctionne (comme l'ont dit les personnes plus haut).

                Et pour revenir sur ce qu'a dit poweRiCube, "ça me le fait assez souvent", mais, sans mettre la fonction "main", ça ne peut pas marcher.

                Sinon, normalement CodeBlocks te dit dans la zone du bas qu'il te manque un ";" avant l'accolade.

                Bref, Voilà voilà :)

                • Partager sur Facebook
                • Partager sur Twitter

                "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

                  27 juin 2019 à 9:01:19

                  Re du coup ouai c'étais un problème parceque je ne mettais pas La fonction "main", en tous cas merci a tous ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 juin 2019 à 9:27:05

                    Salut,

                    @Le_Wasabi_Ca_Pik', on peut ouvrir une accolade « sans aucune raison ». Ça veut juste délimiter un bloc. Par exemple ce code est correct.

                    int main(void) {
                       int a = 0;
                       {
                          int b = 5;
                          int c = 10;
                          {
                             int d = 15;
                             int e = 20;
                             a = b + c + d + e;
                          }
                       }
                       return a;
                    }
                    
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                      27 juin 2019 à 12:20:24

                      @yo@n97one Ah, je ne savais pas , merci :)

                      Mais, je ne comprend pas, quel est l'intérêt d'ouvrir un bloc comme ça ? Il me semble qu'en C, les variables sont détruites à la fin du bloc où elles ont été créés  (ou je confond avec un autre langage) ?

                      • Partager sur Facebook
                      • Partager sur Twitter

                      "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

                        27 juin 2019 à 15:05:33

                        et bien je rebondie sur une autre question pourquoi ça ne veut pas ? mon code est pourtant bon
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 juin 2019 à 15:09:07

                          Faut regarder le build log.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 juin 2019 à 15:14:15

                            Tu es sûr d'avoir compilé le programme ? Pour rappel, sur CodeBlocks c'est f9 pour un "build and run"
                            • Partager sur Facebook
                            • Partager sur Twitter

                            "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

                              27 juin 2019 à 15:51:02

                              Salut,

                              En langage C, le compilateur s'attend à ce que chaque fonction possède un type de retour et des arguments.

                              int ma_fonction(int argument)

                              • En rouge :Le type de retour de la fonction.
                              • En bleu :Le nom de la fonction
                              • En vert :Le type de l'argument
                              • En violet : Le nom de l'argument

                              Un fonction en C peut prendre plusieurs arguments, ils sont séparés par des virgules :

                              int ma_fonction(int argument1, int argument2)

                              Dans le code que tu nous a fournis, ta fonction main ne possède pas d'arguments. Le compilateur ne comprends donc pas, il ne trouve pas d'arguments...
                              Comme le précise Vanaur dans le message suivant, je me suis trompé. ma_fonction() peut être utilisé.

                              Du coup, il faut préciser au compilateur qu'on ne souhaite pas donner d'arguments à la fonction. Pour ce faire, on utilise le mot clé void.

                              Dans ton code, il faut donc écrire : int main(void) et non pas : int main()

                               int ma_fonction() signifie que la fonction peut prendre un nombre quelconque d'arguments.

                              Merci Vanaur pour ta remarque

                              -
                              Edité par Caucorico 27 juin 2019 à 16:48:28

                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 juin 2019 à 16:14:01

                                Caucorico a écrit:

                                En langage C, le compilateur s'attend à ce que chaque fonction possède un type de retour et des arguments.

                                Dans le code que tu nous a fournis, ta fonction main ne possède pas d'arguments. Le compilateur ne comprends donc pas, il ne trouve pas d'arguments...

                                Du coup, il faut préciser au compilateur qu'on ne souhaite pas donner d'arguments à la fonction. Pour ce faire, on utilise le mot clé void.

                                Pas forcément, une fonction sans argument peut très bien ne pas être void, ou au contraire, une fonction void peut également prendre des arguments.

                                Dans ce cas-ci, selon le compilateur, la fonction principale peut ou peut ne pas prendre d'argument (GCC l'autorise normalement). Ça m'étonnerait que ce soit la source du problème, il semblerait que ça soit en effet une erreur de build plutôt que de compilation.

                                -
                                Edité par vanaur 27 juin 2019 à 16:17:26

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                                  27 juin 2019 à 16:33:38

                                  le problème c'est que sa revient tous le temps depuis quelques heures, j'ai beau build and run ou mettre void, sa fonctionne vraiment pas .. assez embêtant
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 juin 2019 à 16:37:41

                                    Lu',

                                    Comme la suggérer michelbillaud il faudrait regarder le build log.

                                    Pourrais-tu le poster en utilisant le bouton </>, cela permettrai de savoir où ça pêche

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 juin 2019 à 16:43:11

                                      Faut pas pleurer, faut lire ce qu'on te dit de faire !

                                      michelbillaud a écrit:

                                      Faut regarder le build log.



                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        27 juin 2019 à 17:13:53

                                        Désolé je ne m'y connait pas bien encore. le voici, si quelqu'un peut m'expliquer ce qu'il permet pour qu'au cas ou si sa me refait le même problème
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          27 juin 2019 à 17:29:15

                                          Lu'

                                          Peux-tu nous donner le code de tous les fichiers .c, le linker est en train de dire que tu définis la fonction main dans plusieurs fichiers.

                                          La fonction main est unique dans un programme, elle ne peut pas être à plusieurs endroits.

                                          PS: j'ai demander l'utilisation du bouton </> pour le contenu de build log, je vais alors te demander d'utiliser ce bouton pour nous poster ton code afin de nous permettre une meilleure lisibilité.

                                          -
                                          Edité par poweRiCube 27 juin 2019 à 17:29:26

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 juin 2019 à 17:46:46

                                            J'ai l'impression que tu t'es peut-être trompé en créant ton fichier main.c .

                                            En fait, ton fichier main.c se trouve dans le même projet que tes autres fichier.

                                            Peut-être que je me trompe, mais je pense que tu voulais au départ créer ce fichier pour faire des trucs qui n'ont rien a voir avec tes autres fichiers, c'est ça ? 

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

                                              27 juin 2019 à 18:16:05

                                              poweRiCube : Tu parle bien du bouton a coté de la touche majuscule ? si c'est ça j'ai beau appuyé rien ne se passe

                                              j'ai pris le screen de mes documents on je mets toutes les fiches de programmation en C, je pense avoir suivi ce qui été dit dans le cour... bref le voici



                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                27 juin 2019 à 18:28:12

                                                Tu fait menu -> View -> Manager.

                                                Ça va t'afficher arborescence de ton projet. Tu vires les fichiers qui n'on rien à y faire.

                                                Quand tu veux tester un autre code, tu crées un nouveau projet, faut pas tout mettre dans le même projet.

                                                Dans un projet tu ne dois avoir qu'une seule fonction main.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 juin 2019 à 18:37:34

                                                  Non, on ne parle pas du bouton à coté de la majuscule, mais du bouton ici :

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

                                                    27 juin 2019 à 18:59:01

                                                    ok je vois, je vais virer tous les fichiers sauf 1 et tous le reste je le partage en plusieurs dossiers merci ^^ 
                                                    mingw32-g++.exe  -o bin\Release\c.exe obj\Release\Calcul.o obj\Release\conditions.o obj\Release\main.o obj\Release\variable.o  -s  
                                                    obj\Release\conditions.o:conditions.c:(.text.startup+0x0): multiple definition of `main'
                                                    obj\Release\Calcul.o:Calcul.c:(.text.startup+0x0): first defined here
                                                    obj\Release\main.o:main.c:(.text.startup+0x0): multiple definition of `main'
                                                    obj\Release\Calcul.o:Calcul.c:(.text.startup+0x0): first defined here
                                                    obj\Release\variable.o:variable.c:(.text.startup+0x0): multiple definition of `main'
                                                    obj\Release\Calcul.o:Calcul.c:(.text.startup+0x0): first defined here
                                                    C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: obj\Release\Calcul.o: bad reloc address 0xa in section `.text.startup'
                                                    collect2.exe: error: ld returned 1 exit status
                                                    Process terminated with status 1 (0 minute(s), 0 second(s))
                                                    1 error(s), 0 warning(s) (0 minute(s), 0 second(s))
                                                    

                                                    ok voila le code du debug, j'envoie aussi le code

                                                    #include <stdio.h>
                                                    #include <stdlib.h>
                                                    /*absolument se souvenir que c'est \ et pas / */
                                                    int main()
                                                    {
                                                        printf("Hello world!\nje suis une personne gentille\nqui ne ment jamais\n");
                                                        printf("hello guy\nhow are you?\n");
                                                        return 0;
                                                    }

                                                    voila et désolé je ne savais pas ^^'

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      27 juin 2019 à 20:06:09

                                                      Pas grave, maintenant tu sais ;)

                                                      Si tu as résolu tous tes problèmes, passe le sujet en résolu avec le bouton ici ;)

                                                      -
                                                      Edité par Le_Wasabi_Ca_Pik' 27 juin 2019 à 20:34:24

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

                                                        27 juin 2019 à 21:03:27

                                                        Yep merci à vous tous pour vôtres aides ^^
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          27 juin 2019 à 21:11:33

                                                          En fait, l'idée c'est qu'il faut (*) que tu fasses un projet séparé pour chaque programme que tu fais.

                                                          Là, ce qui s'est passé

                                                          • tu as démarré un projet avec un premier fichier .c contenant une fonction main(), jusque là tu vas bien
                                                          • puis, pour faire d'autres exercices tu as as ajouter dans le MEME projet d'autres fichiers avec aussi un main()
                                                          • et là ça ne va pas, parce qu'une fonction ne doit être déclarée qu'une fois.
                                                          d'où les messages, qu'il suffit de lire
                                                          // en regardant dans conditions.c, on trouve un main 
                                                          // alors que main est déjà dans Calcul.c 
                                                          
                                                          obj\Release\conditions.o:conditions.c:(.text.startup+0x0): multiple definition of `main'
                                                          obj\Release\Calcul.o:Calcul.c:(.text.startup+0x0): first defined here
                                                          
                                                          // en regardant dans main.c, on trouve un main 
                                                          // alors que main est déjà dans Calcul.c 
                                                          
                                                          obj\Release\main.o:main.c:(.text.startup+0x0): multiple definition of `main'
                                                          obj\Release\Calcul.o:Calcul.c:(.text.startup+0x0): first defined here
                                                          
                                                          // en regardant dans variable.c, on trouve un main 
                                                          // alors que main est déjà dans Calcul.c 
                                                          
                                                          obj\Release\variable.o:variable.c:(.text.startup+0x0): multiple definition of `main'
                                                          obj\Release\Calcul.o:Calcul.c:(.text.startup+0x0): first defined here

                                                          (*)C'est pas tout à fait vrai, mais, pendant quelques mois pour commencer ça fera l'affaire.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          Probleme avec les acolades qui forme une erreur

                                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                          • Editeur
                                                          • Markdown