English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base C

Contrôle de flux C

Fonctions du langage C

Tableaux en langage C

Pointeurs en langage C

Chains de caractères en langage C

Structure C

Fichier C

Autres C

Manuel de référence C

Méthode et exemple d'utilisation de la fonction vfprintf() de la bibliothèque C

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.

Déclaration

Voici la déclaration de la fonction vfprintf()

int vfprintf(FILE *stream, const char *format, va_list arg)

paramètres

  • stream -- C'est un pointeur vers l'objet FILE, qui identifie le flux.
  • format -- C est une chaîne de caractères, qui contient le texte à écrire dans le flux stream. Elle peut inclure des balises de format qui peuvent être remplacées par les valeurs spécifiées dans les paramètres supplémentaires et formatées selon les besoins. Les attributs des balises de format sont %[flags][width][.precision][length]specifiercomme expliqué ci-dessous :
specifier (désignateur)sortie
ccaractères
d ou ientier décimal signé
enotation scientifique utilisant le caractère e (exponentiel et exponente)
Enotation scientifique utilisant le caractère E (exponentiel et exponente)
fnombre flottant décimal
gchoisi automatiquement la représentation appropriée entre %e ou %f
Gchoisi automatiquement la représentation appropriée entre %E ou %f
ooctal signé
schaîne de caractères de caractères
uentier décimal sans signe
xentier hexadécimal sans signe
Xentier hexadécimal sans signe (lettres majuscules)
padresse de pointeur
npas 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.
0Placez 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
.numberPour 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
hLes 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).
lLes 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).
LLes paramètres sont interprétés comme des types long double (seulement pour les désignateurs de flottant : e, E, f, g et G).
  • arg -- Un objet représentant une liste de paramètres variables. Il doit être initialisé par la macro va_start définie dans <stdarg>.

Valeur de retour

Si elle réussit, elle renvoie le nombre total de caractères écrits, sinon elle renvoie un nombre négatif.

Exemple en ligne

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);
}

Bibliothèque standard - <stdio.h>