Passer des arguments variables à printf/sprintf
En programmation, il est souvent nécessaire de formater et d'afficher du texte ou des données de longueur variable, une tâche couramment gérée par des fonctions comme printf et sprintf. Cependant, ces fonctions nécessitent généralement un nombre fixe d'arguments. Comment passer un nombre variable d'arguments à ces fonctions ?
La solution : Utiliser les fonctions va_*
Le langage C fournit un ensemble de fonctions préfixées par "va_ " qui nous permettent de travailler avec des listes d'arguments de longueur variable. Ces fonctions incluent va_start, va_arg et va_end.
Pour transmettre un nombre variable d'arguments à printf ou sprintf, nous pouvons utiliser les étapes suivantes :
Exemple :
#include <stdio.h> #include <stdarg.h> class MyClass { public: void Error(const char* format, ...) { va_list argptr; va_start(argptr, format); vfprintf(stderr, format, argptr); va_end(argptr); } };
Dans cet exemple, la méthode Error prend une chaîne de format et un nombre variable d'arguments. Il utilise va_arg pour récupérer les arguments, puis appelle vfprintf pour formater et afficher le texte sur stderr.
Remarque :
Bien qu'il soit possible d'utiliser vsprintf au lieu de vfprintf, ce n'est pas recommandé car il est sensible aux débordements de tampon.
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!