VPRINTF |
Imprime en format à partir de virtuel |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int vprintf(const char *format,va_list arg) |
Paramètres
Nom | Description | |
---|---|---|
format | Ce paramètre permet d'indiquer le texte à écrire. Il est a noter que un ou plusieurs des spécificateurs suivants peuvent être inclus dans le texte et il utilisera un argument supplémentaire pour chaque spécificateurs : | |
Spécificateur | Description | |
%c | Ce spécificateur indique d'insérer à cette position un caractère contenu dans la liste des arguments après le texte | |
%d | Ce spécificateur indique d'insérer à cette position un entier sous forme décimal contenu dans la liste des arguments après le texte | |
%f | Ce spécificateur indique d'insérer à cette position un nombre à virgule flottante contenu dans la liste des arguments après le texte | |
%i | Ce spécificateur indique d'insérer à cette position un entier contenu dans la liste des arguments après le texte | |
%o | Ce spécificateur indique d'insérer à cette position un entier sous forme octal contenu dans la liste des arguments après le texte | |
%s | Ce spécificateur indique d'insérer à cette position une chaîne de caractères contenu dans la liste des arguments après le texte | |
%x | Ce spécificateur indique d'insérer à cette position un entier sous forme hexadécimal contenu dans la liste des arguments après le texte | |
Il est possible d'ajouter une précision du nombre décimal afficher en insérant le nombre entre le symbole de pourcentage et la lettre. | ||
arg | Ce paramètre permet d'indiquer le pointeur d'argument |
Description
Cette fonction effectue l'écriture de texte selon un certain format à l'aide de paramètre virtuel sur la console.
Remarques
- Les fonctions vprintf(), vfprintf() et vsprintf() sont fonctionnellement équivalentes à printf(), fprintf() et sprintf(), respectivement, sauf que la liste de paramètres a été remplacée par un pointeur vers une liste de paramètres. Ce pointeur doit être de type va_list, étant défini dans l'entête cstdarg (ou le fichier d'entête C stdarg.h).
- Définition et utilisation : La fonction vprintf est une fonction de la bibliothèque standard C permettant d'écrire des données formatées sur la sortie standard (habituellement l'écran). Elle est utilisée pour imprimer des informations en utilisant une chaîne de format, semblable à printf, mais avec la capacité de traiter une liste de paramètres variable via un va_list. Son utilisation simplifie le passage d'une série de paramètres à la fonction sans avoir besoin de les énumérer individuellement, ce qui la rend très pratique dans des contextes où le nombre de paramètres peut varier.
- Utilisation avec va_list : vprintf est particulièrement utile dans les fonctions devant accepter un nombre variable de paramètres, comme dans les fonctions de journalisation ou de débogage. En utilisant va_start pour initialiser un va_list, vous pouvez appeler vprintf pour traiter ces arguments de manière propre et efficace. Cela réduit la complexité du code et améliore sa lisibilité, car il évite les répétitions et les manipulations manuelles des paramètres.
- Retour de la fonction : Comme avec printf, vprintf retourne le nombre de caractères écrits dans la sortie standard, ou un nombre négatif en cas d'erreur. Ce retour est crucial pour détecter les erreurs et gérer les flux de sortie correctement. La vérification de ce retour permet aux développeurs de s'assurer que l'opération d'impression a réussi et de prendre des mesures appropriées en cas de problème.
- Gestion des erreurs : Étant donné que vprintf peut rencontrer des erreurs (comme des problèmes d'allocation de mémoire ou des erreurs d'écriture sur la sortie standard), il est important de vérifier son retour pour s'assurer que l'impression a été effectuée correctement. Ignorer les erreurs peut entraîner des comportements inattendus, en particulier dans des applications critiques qui dépendent d'une sortie correcte et précise.
- Comparaison avec printf : vprintf est similaire à printf, mais la différence clef est que vprintf prend un va_list comme paramètre, tandis que printf prend une liste de parmètres variables directement. Cela permet à vprintf d'être utilisé dans des contextes où les arguments sont déjà rassemblés dans un va_list. Cette fonctionnalité est particulièrement utile dans des fonctions d'encapsulation devant passer des paramètres à des fonctions d'impression sans avoir à les spécifier individuellement.
- Applications pratiques : vprintf est souvent utilisé dans des systèmes de journalisation où les messages doivent être formatés de manière flexible et où le nombre de paramètres peut changer d'un appel à l'autre. Cela permet aux développeurs de créer des messages de journal de bord dynamiques sans complexité inutile. Son utilisation dans des fonctions personnalisées permet une plus grande modularité et réutilisabilité du code, facilitant ainsi les mises à jour et les modifications futures.
- Portabilité : Comme vprintf est défini dans la bibliothèque standard C, il est portable entre différentes plateformes et compilateurs. Cela en fait un choix sûr pour les applications qui doivent fonctionner sur plusieurs systèmes d'exploitation. Cependant, il est toujours bon de consulter la documentation spécifique à votre environnement de développement pour connaître les particularités qui pourraient influencer le comportement de vprintf.
Exemple
Voici divers exemple d'affichages de format :

- #include <cstdio>
- #include <cstdlib>
- #include <cstdarg>
-
- void MyVPrintF(const char * format, ...) {
- va_list args;
- va_start(args, format);
- vprintf(format, args);
- va_end(args);
- }
-
- int main () {
- MyVPrintF("Boujour!\n");
- MyVPrintF("Entier %%i = %i\n",15);
- MyVPrintF("Hexadecimal %%x = %x\n",16);
- MyVPrintF("Octal %%o = %o\n",16);
- MyVPrintF("Chaine de caracteres %%s = %s\n","message");
- MyVPrintF("Reel %%f = %f\n",123.45);
- MyVPrintF("Reel %%f = %.2f\n",123.45);
- return 0;
- }
on obtiendra le résultat suivant :
Boujour!Entier %i = 15
Hexadecimal %x = 10
Octal %o = 20
Chaine de caracteres %s = message
Reel %f = 123.450000
Reel %f = 123.45
Voir également
Langage de programmation - C++ - Référence procédures et fonctions - freopen
Langage de programmation - C++ - Référence procédures et fonctions - printf
Langage de programmation - C++ - Référence procédures et fonctions - va_arg
Langage de programmation - C++ - Référence procédures et fonctions - va_end
Langage de programmation - C++ - Référence procédures et fonctions - va_start
Langage de programmation - C - Référence procédures et fonctions - vprintf
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 735.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 291.