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 du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    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
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 282
    Points
    130 282
    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);
    }
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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 du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    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