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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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