Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exécution de code via un programme

En C++ peut-être ?

Sujet résolu
    10 juin 2008 à 19:12:29

    Bonjour amis Zér0s... :)
    J'ai une question... comme à peu près tous les créateurs de topics :p .
    Comment traduriez-vous ceci :
    #include <iostream>
    
    int main ()
    {
       FILE* fichier = NULL;
       fichier = fopen("code.txt"); 
       // Remarquez le .txt, j'aurais aussi bien pu mettre .mp3, ou autre
       executerCodeFichier(fichier); // Ligne à traduire
       fclose (fichier);
       return 0;
    }
    


    Merci d'avance :) .
    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2008 à 19:15:19

      J'ai rien compris, ça veut dire quoi "traduire" ?
      Aussi, le forum C c'est à coté...
      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2008 à 19:21:02

        Ce code manque de flux...
        • Partager sur Facebook
        • Partager sur Twitter
          10 juin 2008 à 19:41:34

          Pour reprendre les remarques déjà faite :
          • c'est du C pas du C++. Dans ce cas l'utilisation de <iostream> est pas très judicieuse, ça serait plutôt <stdio.h>.
          • les fichiers en C++ se manipule par des flux, à l'aide de la classe fstream par exemple.

          Pour finir, je crois que tu ne pouvais pas poser une question moins claire : tu veux exécuter du code, un script plus exactement, à l'exécution c'est bien ça ?
          • Partager sur Facebook
          • Partager sur Twitter
            10 juin 2008 à 20:10:54

            la ligne que tu dit exécute une fonction,executerCodeFichier , qui peux - ou non - faire des choses complexe. Pour en savoir plus, commence par lire le tutoriel C à partir du tout début.
            • Partager sur Facebook
            • Partager sur Twitter
            Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
            Anonyme
              10 juin 2008 à 20:12:19

              Que dois contenir le fichier exactement?
              • Partager sur Facebook
              • Partager sur Twitter
                11 juin 2008 à 16:54:08

                Qu'est-ce que vous avez tous à me dire que c'est du C et pas du C++ o_O ?
                Je vois pas l'erreur... Si vous parlez de mon iostream, en effet il ne sert à rien, mais j'ai pris l'habitude de l'inclure dans tous les programmes. Désolé enlevons le ^^ .
                Le but est d'exécuter le code contenu dans un autre fichier. Par exemple, un fichier .txt où il y aurait marqué un peu de code, mais pas une fonction.
                Je suis clair :o ?
                • Partager sur Facebook
                • Partager sur Twitter
                  11 juin 2008 à 17:33:34

                  Citation : dunedune

                  Qu'est-ce que vous avez tous à me dire que c'est du C et pas du C++ o_O ?
                  Je vois pas l'erreur... Si vous parlez de mon iostream, en effet il ne sert à rien, mais j'ai pris l'habitude de l'inclure dans tous les programmes. Désolé enlevons le ^^ .
                  Le but est d'exécuter le code contenu dans un autre fichier. Par exemple, un fichier .txt où il y aurait marqué un peu de code, mais pas une fonction.
                  Je suis clair :o ?




                  Non ton code n'est pas du C++ lis les posts avant et tu comprendras ensuite si tu veux écrire du C++ dans un fichier et faire executer le code par un autre programme tu peux mais a ce moment la tu fais un interpréteur de code mais t'es pas sorti ...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 juin 2008 à 17:37:24

                    non...

                    1) Les FILE c'est du C... c'est pourquoi on ne peut pas t'aider sur la lecture du fichier en C++. FILE, printf, etc, ne sont pas compatible avec cout et fstream. Il y a un tuto non-officiel sur le site pour l'utilisation de fstream.

                    2) Les fichiers sont des formats : .mp3 c'est le format MP3, .gif c'est le format GIF, etc... Si toi tu veux exécuter un script dans un langage connus je te conseille de chercher des bibliothèques. Si tu veux lire un fichier image ou audio comme .mp3, encore une fois cherche des bibliothèque qui te permetterons d'envoyer le flux au matériel audio. Le domaine de l'interprétation de fichier est vaste. Tout les documents, excepté les textes bruts ont une structure pour permettre à un programme de le comprendre et de l'analyser.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 juin 2008 à 20:10:40

                      En fait tu cherches à réaliser un interpreteur qui exécuterait le code se trouvant dans le fichier .txt ?

                      Si c'est le cas, je te conseille Boost.Python qui comme son nom l'indique interprète le Python.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                      Anonyme
                        11 juin 2008 à 20:19:12

                        ou alors Lunar pour le Lua
                        Rappel: un code C++ dois être compilé pour être exécuter (a moins de faire un interpréteur... Bonne chance^^)
                        @+
                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 juin 2008 à 20:44:59

                          Si tu veux parler d'un code en C, y'a ptet une solution (compliquée mais c'en est une ^^).
                          Cela consisterait à créer une DLL à partir de ce code là (avec gcc par exemple, mais cela suppose que l'utilisateur ait gcc) qui contiendrait ton code C (avec quelques arrangements bien entendu). Il faudrait ensuite, dans ton programme qui doit exécuter le code, l'arranger pour lire la fonction dans ta DLL.
                          Oui je sais c'est compliqué, mais bon j'y suis arrivé moi :p
                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 juin 2008 à 20:49:34

                            Il a dû oublier d'inclure <cerveau.h>.
                            (cf : sa citation).
                            • Partager sur Facebook
                            • Partager sur Twitter
                            :)
                              12 juin 2008 à 10:55:21

                              Sinon, tu peux faire :

                              /* ton programme */
                              system("gcc qsdf.c -o foobar");
                              system("./foobar");
                              /* ton programme */
                              


                              ->[]
                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 juin 2008 à 15:04:49

                                Ce qui fait quoi ?
                                Excusez moi je ne savais pas que FILE n'existait pas en C++.
                                Le fait que C++ ne soit pas un language interprété empêche d'accéder à du code à partir d'un exécutable ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 juin 2008 à 15:32:27

                                  Citation

                                  Le fait que C++ ne soit pas un language interprété empêche d'accéder à du code à partir d'un exécutable ?



                                  Oui en effet, si c'est si facile en php de faire

                                  <?php
                                     /*Début de code*/
                                  
                                     include('BoutDeCodeEnPlus.php');
                                  
                                     /*Suite du code*/
                                  ?>
                                  


                                  c'est parceque derrière il y a php qui est tout a fait capable d'interpréter ce "BoutDeCodeEnPlus.php" que tu rajoute a la volée. En C++, comme c'est compiler, il n'y a rien qui sache éxecuter du C++ a la volée pour t'aider, il n'y a que ton programme exécuté par le processeur. Donc tu ne peux éxecuter facilement que ce qui est compréhensible par ton processeur : un autre programme compilé.

                                  Une solution peut-être de rendre ton programme principal capable d'interpréter des scripts, mais c'est long et difficile, donc il faut voir si ce que tu veux en faire en vaut le coups.


                                  PS: Pour le FILE, ce n'est pas exactement que ça n'est pas utilisable en C++, mais il y a tellement mieux que c'est a bannir ;)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 juin 2008 à 15:41:59

                                    Citation : Inki

                                    Une solution peut-être de rendre ton programme principal capable d'interpréter des scripts, mais c'est long et difficile, donc il faut voir si ce que tu veux en faire en vaut le coup.


                                    Non cela n'en vaut pas le coup mais j'aime "long et difficile" :p .
                                    Je suis intéressé quelle est la technique ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 juin 2008 à 15:42:35

                                      En fait c'est qu'il faut pouvoir l'interprété et outre CGI (Qui compile avant d'exécuter si je me souvient bien) je ne connais pas de moyen. De plus il ne te sera pas possible d'utiliser des bibliothèques tierce pré-compilé si tu veux seulement interpréter le code. Et j'ajoute à cela que si tu n'as aucune expérience en analyse syntaxique tu vas pleurer avant longtemps.

                                      Donc tu devras utiliser une bibliothèque permettant d'interpréter du code. Exemples cités précédement : Python ou Lua. Il y en a d'autres (Perl, PHP) mais je crois qu'un seul de ces deux là sera assez. Je ++ sur Lua mais Python (sans expérience) semble très efficace.

                                      Sinon il y a l'options de créer une interface de classe qui sera l'entrée de TOUT les script qui pourront être "collé" à ton application dans des DLL... Tant que l'interface est respecté ton programme pourra appeler le code de la DLL... Mais pour ça il faut savoir prévoir ce que contiendra les DLL et que le programme ai une bonne structure de chargement de code. L'ennui c'est que la DLL peut exécuter n'importequoi !

                                      Pour ce qui est de la structure FILE. Elle est accessible en C++ que pour la compatibilité descendante pour que les vieux projet de 30 ans puissent compiler. Mais dans les nouveaux projet, les techniques les plus avancées et sécuritaires sont à prévaloire.

                                      GusGus963 >> Ce qui oblige d'installer et de configurer gcc sur chaque poste sur lequel on veut faire fonctionner le programme. Aussi bien utiliser CGI... Et tant qu'à compiler du C++ en "Script" aussi bien l'implémenter directement dans le programme !
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        13 juin 2008 à 10:35:57

                                        Mattex > je disais ça comme ça. Ce serait idiot de le faire.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          13 juin 2008 à 11:14:32

                                          Citation : dunedune

                                          Ce qui fait quoi ?
                                          Excusez moi je ne savais pas que FILE n'existait pas en C++.


                                          <traduction de ce qui a été dit>
                                          C'est essentiellement utilisé en C (parce que pas le choix). En C++ on utilise majoritairement d'autres choses.
                                          Donc si tu veux trouver des gens qui ont une expérience significative avec cet artéfact, c'est dans le forum C, pas le forum C++.
                                          </>

                                          Après l'autre question, tout dépend du contenu du fichier. Si c'est un exécutable, tu peux le balancer dans system() ou d'autres fonctions du même style, si c'est un document Word et que tu es sous Windows, tu pourras utiliser l'API win32 qui ira chercher l'exécutable associé dans la base des registre (ce qui reviendra à faire un system( start fichier), mais en plus intelligent.

                                          Pour l'interprétation de scripts, il existe quantité de bindings pour Python, lua, etc (il existe même un interpréteur C++, si si) qui te permettront d'incorporer des scripts interprétés au dernier moment. (ce que font Civ IV et pas mal de jeux aujourd'hui)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                            13 juin 2008 à 18:07:52

                                            D'accord merci beaucoup !
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Exécution de code via un programme

                                            × 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