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

R�seau C Discussion :

vprintf() et vfprintf() ?


Sujet :

R�seau C

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Par d�faut vprintf() et vfprintf() ?
    Bonjour,

    Qqun sait � quoi servent vprintf() et vfprintf() ?On en parle vaguement dans mon livre mais sans donner d'exemple ,moi je les ai essay�es et apparamment le r�sultat est le m�me que printf () et fprintf ()

    Merci

    Zazeglu

  2. #2
    Expert �minent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par d�faut
    Le r�sultat oui, mais le format d'appel est diff�rent. Dans printf, tu passes les arguments directement � la fonction. Dans vprintf, tu passes une va_list qui pointe vers tes arguments.

    Quel est l'int�r�t ?

    C'est tout simplement si tu veux cr�er une fonction � arguments variables que tu voudrais ensuite passer � un printf par exemple. Dans ce cas tu es oblig� de passer par va_list.

    Voici l'exemple d'une fonction de type printf mais qui non seulement l'affiche, mais aussi l'enregistre dans un fichier de logs.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    FILE* flog;
     
    void logprintf(const char* fmt, ...)
    {
      va_list v;
     
      va_start(v, fmt);
      vprintf(fmt, v);
      va_end(v);
     
      va_start(v, fmt);
      vfprintf(flog, fmt, v);
      va_end(v);
    }

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Par d�faut
    Merci bien ; mais c'est quoi une va_list ?Je n'ai pas encore �tudier le passage de nombre variable d'argument � un fct en faite

    Zazeglu

  4. #4
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    va_list est simplement un typedef de char*, donc va_list v c'est juste char* v.
    En gros, on fait pointer v sur le 1er param�tre gr�ce � va_start, puis on peut le faire pointer successivement sur chacun des param�tres si on connait leur taille, ou simplement l'utiliser dans vprintf ou vfprintf.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Par d�faut
    Merci bien

    Au fait ,je ne sais pas si je te l'ai d�ja dit mais :
    "Heureux l'�tudiant qui, comme la rivi�re, peut suivre son cours sans sortir de son lit" [Patrick Lemmers]
    "Avec tes sockets et ton c sharp tu auras pas froid cet hiver" [Cyrille P. aka "Z"]


    Zazeglu

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. probleme avec vfprintf
    Par vince3320 dans le forum C
    R�ponses: 11
    Dernier message: 17/10/2005, 16h49

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