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

Tutoriel de base en langage C

Contrôle de flux en langage C

Fonctions en C

Tableaux en C

Pointeurs en C

Chaines de caractères en C

Structure en langage C

Fichier en langage C

Autres en langage C

Manuel de référence en langage C

Fonction de bibliothèque C vsprintf() et exemples d'utilisation

Bibliothèque standard - <stdio.h>

Fonction de bibliothèque C int vsprintf(char *str, const char *format, va_list arg) Envoyez une sortie formatée avec une liste de paramètres vers une chaîne.

Déclaration

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

int vsprintf(char *str, const char *format, va_list arg)

paramètre

  • str -- C'est un pointeur vers un tableau de caractères, qui stocke la chaîne de caractères C.
  • format -- C'est une chaîne, qui contient le texte à écrire dans la chaîne str. 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 (désignateur)Sortie
ccaractère
d ou iEntier décimal signé
eUtilisez le format de nombre scientifique avec le caractère e (composant de nombre et d'exponentiel).
EUtilisez le format de nombre scientifique avec le caractère E (composant de nombre et d'exponentiel).
fNombre flottant décimal
gChoisissez automatiquement la représentation appropriée entre %e ou %f
GChoisissez automatiquement la représentation appropriée entre %E ou %f
oOctal signé
schaîne de caractères du caractère
uEntier décimal non signé
xEntier hexadécimal non signé
XEntier hexadécimal non signé (lettres majuscules)
padresse de pointeur
nPas de sortie
%caractère

flags (drapeaux)描述
-Alignement à gauche dans le champ donné, par défaut alignement à droite (voir la sous-indication width).
+Force l'affichage d'un signe plus ou moins devant le résultat (+ ou -) c'est-à-dire que devant les valeurs positives, il est affiché + Par défaut, seules les valeurs négatives affichent un - n°
(space)Si aucun symbole n'est écrit, un espace est inséré devant la valeur.
#Lorsqu'il est utilisé avec les désignateurs o, x ou X, des zéros sont affichés avant les valeurs non nulles, respectivement 0, 0x ou 0X.
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 nombres après lui. Par défaut, s'il n'y a pas de nombres après lui, 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 utilisé avec e ou E, mais les zéros à la fin ne sont pas supprimés.
0Placez un zéro (0) à gauche du nombre spécifié pour le remplissage padding, au lieu d'espaces (voir la sous-indication width).

width (largeur)描述
(number)Le nombre minimum de caractères à sortir. Si la valeur sortie est plus courte que ce nombre, le résultat sera rempli de espaces. Si la valeur sortie est plus longue que ce nombre, le résultat ne sera pas tronqué.
*width(宽度)在 format 字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前。

.precision(精度)描述
.number对于整数说明符(d、i、o、u、x、X):precision 指定了要写入的数字的最小位数。如果写入的值短于该数,结果会用前导零来填充。如果写入的值长于该数,结果不会被截断。精度为 0 意味着不写入任何字符。
对于 e、E 和 f 说明符:要在小数点后输出的小数位数。
对于 g 和 G 说明符:要输出的最大有效位数。
对于 s: 要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。
对于 c 类型:没有任何影响。
当未指定任何精度时,默认为 1。如果指定时不带有一个显式值,则假定为 0。
.*精度在 format 字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前。

length(长度)描述
h参数被解释为短整型或无符号短整型(仅适用于整数说明符:i、d、o、u、x 和 X)。
l参数被解释为长整型或无符号长整型,适用于整数说明符(i、d、o、u、x 和 X)及说明符 c(表示一个宽字符)和 s(表示宽字符字符串)。
L参数被解释为长双精度型(仅适用于浮点数说明符:e、E、f、g 和 G)。
  • arg -- 一个表示可变参数列表的对象。这应被 <stdarg> 中定义的 va_start 宏初始化。

返回值

如果成功,则返回写入的字符总数,否则返回一个负数。

在线示例

下面的示例演示了 vsprintf() 函数的用法。

#include <stdio.h>
#include <stdarg.h>
char buffer[80];
int vspfunc(char *format, ...)
{
   va_list aptr;
   int ret;
   va_start(aptr, format);
   ret = vsprintf(buffer, format, aptr);
   va_end(aptr);
   return(ret);
}
int main()
{
   int i = 5;
   float f = 27.0;
   char str[50] = "oldtoolbag.com";
   vspfunc("%d %f %s", i, f, str);
   printf("%s\n", buffer);
   return(0);
}

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

5 27.000000 oldtoolbag.com

Bibliothèque standard - <stdio.h>