VPRINTF |
Imprime en format à partir de virtuel |
---|---|
Langage C | stdio.h |
Syntaxe
int vprintf(const char *texte,va_list ptrargument); |
Paramètres
Nom | Description | |
---|---|---|
texte | 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. | ||
ptrargument | 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.
Algorithme
MODULE VPRINTF(format, arguments) * Initialiser un pointeur va_list avec les arguments variables Initialiser va_list à arguments * Appeler vfprintf pour envoyer la sortie formatée vers stdout Appeler vfprintf(stdout, format, arguments) * Terminer l'utilisation des arguments variables va_end(va_list) |
Remarques
- Définition et utilité : La fonction vprintf fait partie de la bibliothèque <stdio.h> et permet d'afficher une chaîne de caractères formatée sur la sortie standard (stdout). Elle est similaire à printf, mais au lieu de prendre des arguments individuels pour chaque valeur à afficher, elle prend un objet va_list contenant les arguments à formater, ce qui la rend adaptée aux situations où les arguments sont déjà préparés dans un format variable.
- Différence avec printf : La principale différence entre vprintf et printf réside dans la manière dont les arguments sont passés à la fonction. Tandis que printf accepte directement des arguments variables dans la signature de la fonction, vprintf attend un objet va_list, ce qui est utile lorsque les arguments sont déjà collectés ou passés dynamiquement (par exemple, dans des fonctions manipulant des arguments variables via va_start).
- Utilisation avec va_list : vprintf est souvent utilisée dans des fonctions recevant un nombre variable d'arguments, par exemple dans des fonctions de journalisation ou de débogage. Avant d'appeler vprintf, l'objet va_list doit être initialisé avec va_start et terminé avec va_end pour garantir que les ressources associées à la gestion des arguments variables sont correctement libérées.
- Retour de la fonction : Comme printf, vprintf renvoie le nombre de caractères imprimés sur la sortie standard, ou une valeur négative si une erreur se produit lors de l'affichage. Ce retour peut être utile pour vérifier si l'affichage a réussi ou pour gérer des erreurs d'écriture, bien que dans des applications simples, ce retour soit souvent ignoré.
- Applications typiques : vprintf est principalement utilisée dans des fonctions traitant des arguments variables, notamment dans les fonctions de journalisation où un nombre indéterminé d'arguments peut être passé. Elle est aussi couramment utilisée dans des systèmes de débogage ou de formatage dynamique de texte où la chaîne de format et les arguments peuvent varier en fonction du contexte d'exécution.
- Compatibilité et portabilité : Comme toutes les fonctions de la famille v*printf, vprintf peut dépendre de l'implémentation spécifique du compilateur et du système d'exploitation, notamment pour la gestion de la sortie standard et des formats de caractères. Cependant, elle est largement supportée sur toutes les plateformes conformes à la norme C, et son comportement reste généralement portable dans des applications classiques.
- Sécurité et bonnes pratiques : Bien qu'elle soit utile pour gérer des arguments variables, l'utilisation de vprintf nécessite de prêter attention à la correspondance correcte entre les spécificateurs de format dans la chaîne de format et les types des arguments dans l'objet va_list. Une erreur dans cette correspondance peut entraîner des comportements indéfinis, comme des dépassements de mémoire ou des résultats incorrects. Il est donc important de valider soigneusement les formats et les types d'arguments dans des applications plus complexes.
Exemple
Voici divers exemple d'affichages de format :
Essayer maintenant !
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdarg.h>
-
- 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.