IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

comment faire fonctionner: ma_fonction("teste"); ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut comment faire fonctionner: ma_fonction("teste"); ?
    Bonjour,

    j'ai crée une fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void ma_function(char *message)
    {
      char *cmd;
     
      sprintf(cmd, "echo %s > log.txt", message);
      system(cmd);
    }
    mais voilà, lorsque je l'appel, ça fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_function("erreur dans la partie 1");
    j'ai dû oublier quelque(s) chose(s)...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void ma_function(const char *message)
    {
      char *cmd;
     
      sprintf(cmd, "echo %s > log.txt", message);
      system(cmd);
    }
    il manqué le const char

    oky, bah merci quand même, je savais bien que j'avais oublié quelque chose

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par dtcSearch Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void ma_function(const char *message)
    {
      char *cmd;
     
      sprintf(cmd, "echo %s > log.txt", message);
      system(cmd);
    }
    il manqué le const char

    oky, bah merci quand même, je savais bien que j'avais oublié quelque chose
    Je serais surpris que ça marche. cmd étant un pointeur non initialisé et sprintf copiant le résultat dans l'adresse de ce premier argument.

    En C++, tu ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <string>
    #include <sstream>
     
    void ma_function(std::string const &message_)
    {
      std::ostringstream commande;
      commande << "echo "<<message_<<" > log.txt";
     
      system(commande.str().c_str());
    }
    Pour des char (const)* et des sprintf voir le forum C.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut
    Oui, désolé,

    je me suis trompé de forum, ça aurai du être dans le forum C.

    Et dans le poste au dessus, effectivement, c'est pas un pointeur qu'il faut pour cmd.

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void ma_function(const char *message)
    {
      char cmd;
     
      sprintf(cmd, "echo %s > log.txt", message);
      system(cmd);
    }

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Par défaut
    Citation Envoyé par dtcSearch Voir le message
    Oui, désolé,

    je me suis trompé de forum, ça aurai du être dans le forum C.

    Et dans le poste au dessus, effectivement, c'est pas un pointeur qu'il faut pour cmd.

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void ma_function(const char *message)
    {
      char cmd;
     
      sprintf(cmd, "echo %s > log.txt", message);
      system(cmd);
    }
    Marche ce code la ?

    - sprintf copie ton texte dans cmd
    - mais cmd ici est 1 caratère (char)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut
    Citation Envoyé par laflak Voir le message
    Marche ce code la ?

    - sprintf copie ton texte dans cmd
    - mais cmd ici est 1 caratère (char)
    +1 .....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire fonctionner une scroll bar ???
    Par toto4650 dans le forum MFC
    Réponses: 10
    Dernier message: 18/07/2005, 16h47
  2. [Chat] Comment faire fonctionner Flash 7 sous Debian ?
    Par piff62 dans le forum Evolutions du club
    Réponses: 22
    Dernier message: 07/03/2005, 15h27
  3. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo