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 :

Fonction variadique, stdarg et autres joyeusetées


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Fonction variadique, stdarg et autres joyeusetées
    Salut à tous!

    J'ai une petite question à poser. J'ai bien cherché sur le net et les man, mais sans succès. Voila.

    Je voudrais écrire une fonction f variadique qui ressemble à ca (en C tout simple) :

    void f(char* fmt, ...)
    {
    fais_un_truc_que_je_sais_faire();
    printf(fmt, ...);
    }

    où les deux ... sont exactement la meme liste d'arguments, et ou stdarg.h est evidemment inclus. Autrement dit, je voudrais appeler dans ma fonction f variadique la fonction printf, avec les memes arguments que ceux passés à ma fonction (en plus de faire autre chose, bien sur, mais la n'est pas le problème).
    J'ai essayé de faire un truc du genre

    va_list ap;
    va_start(ap, fmt);
    printf(fmt, ap);

    ou approchant, avec des va_end/copy partout où c'était sensé (selon moi), mais sans succès.
    Désolé si cette question est bête, mis je cherche depuis un moment. Alors un coup de main serait le bienvenu!

    Merci à tous!

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Salux

    Citation Envoyé par Kacs
    va_list ap;
    va_start(ap, fmt);
    printf(fmt, ap);
    Ca devrait marcher.
    (à part qu'il faut le va_end(ap); en plus, mais bon)

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Kacs
    J'ai essayé de faire un truc du genre

    va_list ap;
    va_start(ap, fmt);
    printf(fmt, ap);

    ou approchant
    Donne ce que tu as fait exactement, on pourra alors t'expliquer pourquoi ça n'a pas marché plutôt que d'essayer de deviner. Si tu as bien tenté d'utiliser printf, c'est vfprinf qu'il faut pour passer des va_list.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    c'est vfprinf qu'il faut pour passer des va_list.
    Merci beaucoup, c'est exactement ca que je veux, ca marche impec'! Comme un boulet, j'ai pensé à chercher dans plein de pages man, mais pas celle de printf!! Décidément....

    Merci encore!

    --
    Olivier

  5. #5
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Mince, j'avais po vu
    Veuillez me fouetter 30 fois
    Merci

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Gruik
    Ca devrait marcher.
    vprintf() au lieu de printf().


Discussions similaires

  1. [FocusTraversalPolicy] et autres joyeusetés
    Par Ofunk dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 17/06/2010, 13h35
  2. Pointeur de fonction, Template, map et autres joyeusetés
    Par K2R Nolween dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2009, 04h14
  3. Réponses: 21
    Dernier message: 20/06/2006, 16h49
  4. utilisation de fonction membre dans une autre
    Par tcharles dans le forum C++
    Réponses: 4
    Dernier message: 14/12/2005, 17h19
  5. Réponses: 6
    Dernier message: 30/09/2005, 00h53

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