Maison >développement back-end >C++ >Comment passer un nombre variable d'arguments à printf/sprintf en C et C ?

Comment passer un nombre variable d'arguments à printf/sprintf en C et C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 17:09:11854parcourir

How to Pass a Variable Number of Arguments to printf/sprintf in C and C  ?

Passer des arguments variables à Printf/Sprintf

En C et C , les fonctions printf et sprintf sont utilisées pour l'impression et l'écriture formatées. Ces fonctions permettent de spécifier une chaîne de format qui contrôle la façon dont les arguments suivants sont imprimés. Cependant, il peut y avoir des cas où le nombre d'arguments à imprimer n'est pas connu à l'avance. Cela pose la question de savoir comment passer un nombre variable d'arguments à ces fonctions.

Solution utilisant vfprintf

La bibliothèque C standard fournit la fonction vfprintf, qui peut gérer un nombre variable d'arguments. Il faut deux arguments obligatoires :

  • format : Un pointeur vers la chaîne de format.
  • argptr : Une va_list qui contient la variable arguments.

L'extrait de code suivant montre comment utiliser vfprintf :

void Error(const char* format, ...)
{
    va_list argptr;
    va_start(argptr, format);
    vfprintf(stderr, format, argptr);
    va_end(argptr);
}

Dans cet exemple, la fonction Error prend une chaîne de format comme premier argument et un nombre arbitraire d'arguments supplémentaires. Ces arguments sont accessibles via la va_list, qui est initialisée à l'aide de va_start. La fonction vfprintf est ensuite appelée avec la chaîne de format et la va_list. Enfin, va_end est utilisé pour nettoyer la va_list.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn