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

Tutoriel de base C

Contrôle de flux C

Fonctions en C

Tableaux en C

Pointeurs en C

Chains de caractères en C

Structure C

Fichier C

Autres C

Manuel de référence C

Utilisation et exemple de la fonction de bibliothèque C vprintf()

Bibliothèque standard - <stdio.h>

Fonction de bibliothèque C int vprintf(const char *format, va_list arg) Envoyer une sortie formatée à la sortie standard stdout en utilisant une liste de paramètres.

Déclaration

Voici la déclaration de la fonction vprintf().

int vprintf(const char *format, va_list arg)

paramètres

  • format -- C'est une chaîne, qui contient le texte à écrire dans la sortie standard stdout. Elle peut contenir des balises de format intégrées, qui peuvent être remplacées par les valeurs spécifiées dans les paramètres suivants et formatées selon les besoins. Les attributs des balises de format sont %[flags][width][.precision][length]specifier,具体讲解如下:
specifier (spécificateur)output (sortie)
ccaractère
d ou ientier décimal signé
ereprésentation scientifique avec le caractère e (exponentiel et index)
Ereprésentation scientifique avec le caractère E (exponentiel et index)
fnombre flottant décimal
gchoisir automatiquement la représentation appropriée entre %e ou %f
Gchoisir 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ère

flags (drapeaux)Description
-Aligner à gauche dans la largeur du champ donné, par défaut c'est aligné à droite (voir la sous-indication width).
+Forcer l'affichage d'un signe (+ ou -) avant le résultat (+ ou -soit que devant les nombres positifs sera affiché + par défaut, seules les valeurs négatives affichent un - numéro.
(espace)Si aucun symbole n'est écrit, un espace est inséré devant la valeur.
#Lorsqu'il est utilisé avec les spécificateurs o, x ou X, un zéro (0), 0x ou 0X est affiché devant la valeur non nulle respective.
Lorsqu'il est utilisé avec e, E et f, il force l'output d'un point décimal, même s'il n'y a pas de nombre après. Par défaut, s'il n'y a pas de nombre 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 lorsqu'il est utilisé avec e ou E, mais les zéros à la fin ne sont pas supprimés.
0Place un zéro (0) à gauche du nombre spécifié pour le remplissage padding, au lieu d'un espace (voir la sous-indication width).

largeur (largeur)Description
(number)Nombre minimum de caractères à écrire. Si la valeur écrite est plus courte que ce nombre, le résultat est rempli de caractères d'espace. Si la valeur écrite est plus longue que ce nombre, le résultat n'est pas tronqué.
*La largeur n'est pas spécifiée dans la chaîne de format, mais est placée avant le paramètre à formater sous forme de valeur entière supplémentaire.

.precision (exactitude)Description
.numberPour les désignateurs de nombres entiers (d, i, o, u, x, X) : l'exactitude spécifie le nombre minimum de chiffres à écrire pour le nombre. Si la valeur écrite est plus courte que ce nombre, le résultat est rempli de zéros de tête. Si la valeur écrite est plus longue que ce nombre, le résultat n'est pas tronqué. Une exactitude de 0 signifie qu'aucun caractère n'est écrit.
Pour les désignateurs e, E et f : nombre de décimales à écrire après le point décimal.
Pour les désignateurs g et G : nombre maximum de chiffres significatifs à écrire.
Pour s : nombre maximum de caractères à écrire. Par défaut, tous les caractères sont écrits jusqu'à ce que le caractère de fin de chaîne soit rencontré.
Pour le type c : n'a aucun effet.
Lorsqu'aucune exactitude n'est spécifiée, la valeur par 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 de format, mais est placée avant le paramètre à formater sous forme de valeur entière supplémentaire.

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 flottants : 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 le retour est réussi, il renvoie le nombre total de caractères écrits, sinon il renvoie un nombre négatif.

Exemple en ligne

Le tableau suivant montre l'utilisation de la fonction vprintf().

Exemple en ligne

#include <stdio.h>
#include <stdarg.h>

void ÉcrireFrmtd(char *format, ...)
{
   va_list args;
   
   va_start(args, format);
   vprintf(format, args);
   va_end(args);
}

int main ()
{
   ÉcrireFrmtd("%d variable argument\n", 1);
   ÉcrireFrmtd("%d variable %s\n", 2, "arguments");
   
   return(0);
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant :

1 argument variable
2 arguments variables

Bibliothèque standard - <stdio.h>