Maison  >  Article  >  développement back-end  >  Comment puis-je transmettre en toute sécurité des arguments variables à printf et sprintf ?

Comment puis-je transmettre en toute sécurité des arguments variables à printf et sprintf ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-27 01:57:14391parcourir

How Can I Safely Pass Variable Arguments to printf and sprintf?

Passer des arguments variables à printf/sprintf

Lors de la personnalisation du formatage des messages d'erreur ou d'autres textes dynamiques, il devient nécessaire de transmettre un nombre variable d'arguments à printf ou sprintf. Pour résoudre ce problème, envisagez la solution personnalisée suivante :

La clé réside dans l'appel de la fonction vfprintf, qui prend un nombre variable d'arguments. Voici un extrait de code présentant son utilisation :

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

Dans ce code, vfprintf affiche le texte formaté sur stderr. Vous pouvez également utiliser vsnprintf pour enregistrer la sortie dans une chaîne. Gardez à l'esprit que l'utilisation de vsprintf est déconseillée en raison de sa sensibilité 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!

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