VFPRINTF |
Imprime dans fichier en format à partir de virtuel |
---|---|
Langage C | stdio.h |
Syntaxe
int vfprintf(FILE *ptrfichier,const char *texte,va_list ptrargument); |
Paramètres
Nom | Description | |
---|---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier | |
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.
Algorithme
MODULE VFPRINTF(fichier, format, arguments) * Initialiser un pointeur va_list avec les arguments variables Initialiser va_list à arguments * Parcourir le format et traiter chaque spécificateur de format BOUCLE POUR CHAQUE caractère dans le format FAIRE SI le caractère est un spécificateur de format (par exemple %, d, s, f,...) ALORS * Extraire l'argument correspondant à ce spécificateur argument ← va_arg(va_list, type_approprié) * Formatage de l'argument selon le spécificateur et écriture dans le fichier Écrire l'argument formaté dans fichier SINON * Écrire le caractère directement dans le fichier Écrire caractère dans fichier FIN SI FIN BOUCLE POUR CHAQUE * Terminer l'utilisation des arguments variables va_end(va_list) |
Remarques
- Définition et utilité : La fonction vfprintf fait partie de la bibliothèque <stdio.h> et est utilisée pour formater et écrire une chaîne de caractères dans un flux de fichier en utilisant une liste d'arguments variables. Contrairement à fprintf, prenant des paramètres individuels pour le formatage, vfprintf prend un objet va_list, ce qui permet de passer un nombre variable de paramètres.
- Adaptation aux arguments variables : vfprintf est particulièrement utile lorsque le nombre d'arguments ou les types d'arguments sont inconnus à l'avance. Cela la rend idéale pour des fonctions de journaux, de débogage ou d'autres situations où une fonction reçoit un nombre variable d'arguments de types différents.
- Différence avec fprintf : Tandis que fprintf prend directement les arguments dans la liste des paramètres de la fonction, vfprintf est utilisée dans des situations où ces arguments sont déjà contenus dans un objet va_list. Cela permet de rediriger des appels de fonctions avec des arguments variables, comme dans des enveloppes ou des fonctions de journaux, sans avoir à spécifier chaque argument à la volée.
- Valeur de retour : Comme fprintf, la fonction vfprintf renvoie le nombre de caractères écrits dans le flux de sortie, ou une valeur négative en cas d'erreur. Ce retour peut être utilisé pour vérifier si l'écriture a réussi ou pour détecter des erreurs liées à l'écriture dans le fichier ou le flux spécifié.
- Sécurité et gestion des erreurs : Lorsque vous utilisez vfprintf, il est important de s'assurer que l'objet va_list est correctement initialisé avec va_start et terminé avec va_end. De plus, comme elle est souvent utilisée dans des fonctions manipulant des arguments variables, des erreurs de correspondance de type entre les arguments et les spécifications de format peuvent entraîner des comportements indéfinis ou des corruptions de données.
- Applications typiques : vfprintf est fréquemment utilisée dans des environnements de journalisation ou de débogage, où les fonctions doivent accepter un nombre variable d'arguments et les formater avant de les écrire dans un fichier de journaux de bord. Elle est également utilisée dans des bibliothèques de formatage de texte ou dans des systèmes où les arguments sont traités dynamiquement.
- Portabilité et implémentation : Comme toutes les fonctions de la famille v*printf, vfprintf dépend du système d'exécution et de la plate-forme sous-jacente pour gérer les flux de sortie et les formats. Bien que cette fonction soit largement supportée, il est essentiel de vérifier la compatibilité avec différentes plateformes pour assurer un comportement cohérent, notamment en ce qui concerne la gestion des caractères et des encodages.
Voir également
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 - vfprintf
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 290.
Dernière mise à jour : Mardi, le 28 juillet 2015