English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Bibliothèque standard - <stdio.h>
Fonction de bibliothèque C int vfprintf(FILE *stream, const char *format, va_list arg) Envoyer une sortie formatée au flux stream en utilisant une liste de paramètres.
Voici la déclaration de la fonction vfprintf()
int vfprintf(FILE *stream, const char *format, va_list arg)
specifier (désignateur) | sortie |
---|---|
c | caractères |
d ou i | entier décimal signé |
e | notation scientifique utilisant le caractère e (exponentiel et exponente) |
E | notation scientifique utilisant le caractère E (exponentiel et exponente) |
f | nombre flottant décimal |
g | choisi automatiquement la représentation appropriée entre %e ou %f |
G | choisi automatiquement la représentation appropriée entre %E ou %f |
o | octal signé |
s | chaîne de caractères de caractères |
u | entier décimal sans signe |
x | entier hexadécimal sans signe |
X | entier hexadécimal sans signe (lettres majuscules) |
p | adresse de pointeur |
n | pas de sortie |
% | caractères |
flags (drapeaux) | Description |
---|---|
- | Aligné à gauche dans la largeur du champ donnée, par défaut aligné à droite (voir le sous-désignateur width). |
+ | force l'affichage d'un signe plus ou moins avant le résultat (+ ou -) c'est-à-dire que devant les nombres positifs il y aura + par défaut, seules les valeurs négatives auront un - numéro. |
(space) | Si aucun symbole n'est écrit, insérez un espace avant la valeur. |
# | Lorsqu'il est utilisé avec o, x ou X, les valeurs non nulles sont précédées respectivement de 0, 0x ou 0X. Lorsqu'il est utilisé avec e, E et f, il force l'écriture d'un point décimal, même s'il n'y a pas de chiffres après. Par défaut, s'il n'y a pas de chiffres après, le point décimal n'est pas affiché. Lorsqu'il est utilisé avec g ou G, le résultat est le même que celui obtenu avec e ou E, mais les zéros à la fin ne sont pas supprimés. |
0 | Placez des zéros (0) à gauche du nombre spécifié pour le remplissage padding, au lieu d'espaces (voir le sous-désignateur width). |
width (largeur) | Description |
---|---|
(number) | Le nombre minimal de caractères à écrire. Si la valeur écrite est plus courte que ce nombre, le résultat sera complété par des espaces. Si la valeur écrite est plus longue que ce nombre, le résultat ne sera pas tronqué. |
* | La largeur n'est pas spécifiée dans la chaîne format, mais est placée comme paramètre entier supplémentaire avant les arguments à formater. |
.precision (précision) | Description |
---|---|
.number | Pour les désignateurs d'entier (d, i, o, u, x, X) : la précision indique le nombre minimal de chiffres à écrire. Si la valeur écrite est plus courte que ce nombre, le résultat sera complété par des zéros avant. Si la valeur écrite est plus longue que ce nombre, le résultat ne sera pas tronqué. Une précision de 0 signifie qu'aucun caractère ne sera écrit. Pour les désignateurs e, E et f : le nombre de décimales à sortir après le point décimal. Pour les désignateurs g et G : le nombre maximum de chiffres significatifs à sortir. Pour le type s : le nombre maximum de caractères à sortir. Par défaut, tous les caractères sont sortis jusqu'à ce que le caractère de fin de chaîne soit rencontré. Pour le type c : n'a aucun effet. Lorsqu'aucune précision n'est spécifiée, le défaut est 1. Si elle n'est pas spécifiée avec une valeur explicite, elle est supposée être 0. |
.* | L'exactitude n'est pas spécifiée dans la chaîne format, mais elle est placée avant les paramètres entiers à formater. |
Longueur (longueur) | Description |
---|---|
h | Les paramètres sont interprétés comme des types short ou unsigned short (seulement pour les désignateurs de nombres entiers : i, d, o, u, x et X). |
l | Les paramètres sont interprétés comme des types long ou unsigned long, appropriés pour les désignateurs de nombres entiers (i, d, o, u, x et X) et le désignateur c (représentant un caractère large) et s (représentant une chaîne de caractères large). |
L | Les paramètres sont interprétés comme des types long double (seulement pour les désignateurs de flottant : e, E, f, g et G). |
Si elle réussit, elle renvoie le nombre total de caractères écrits, sinon elle renvoie un nombre négatif.
L'exemple suivant montre l'utilisation de la fonction vfprintf().
#include <stdio.h> #include <stdarg.h> void WriteFrmtd(FILE *stream, char *format, ...) { va_list args; va_start(args, format); vfprintf(stream, format, args); va_end(args); } int main () { FILE *fp; fp = fopen("file.txt","w"); WriteFrmtd(fp, "Ceci est simplement un argument %d \n", 10); fclose(fp); return(0); }
Compilons et exécutons le programme ci-dessus, ce qui ouvrira le fichier dans le répertoire courant file.txtet écrivez le contenu suivant :
Ceci est simplement un argument 10
Maintenant, utilisons le programme suivant pour afficher le contenu du fichier ci-dessus :
#include <stdio.h> int main () { FILE *fp; int c; fp = fopen("file.txt","r"); while(1) { c = fgetc(fp); if( feof(fp) ) { break ; } printf("%c", c); } fclose(fp); return(0); }