C'est une fonction qui gère un nombre illimité de paramètres, vous pouvez lui en transmettre 1,2,927... et il les affiches toutes.
Source / Exemple :
#include <iostream.h> //pour les cout
#include <stdarg.h> //pour les macros/type
#include <string.h> //pour strcat()
// Prototype de la fonction, num est le nombre de paramètres
// ... représente un nombre indéfini de paramètres
void printfmaison(int num, ...);
void main()
{
//qque chaines
char lala[10] = "Lala";
char str1[20] = "Copie de ";
char str2[10] = "Chaines";
//on call la fonction avec 5 paramètres supplémentaires:
// 3 chaines constantes, 1 chaines variable, 1 retour de fonction
printfmaison(5, "Salut", "Bonjour", "1982", lala, strcat(str1, str2));
}
void printfmaison (int num, ...)
{
//un simple typedef pour char*, gère les arguments supplémentaires
va_list arguments;
//va_start: paramètre1: le pointeur d'argument
// paramètre2: le dernier paramètre obligatoire (formel)
// Cette macro indique que arguments sera le pointeur vers les arguments supplémentaires
va_start(arguments, num);
//cette boucle fouille pour trouver tous les paramètres supplémentaires
// num est le nombre de paramètres supplémentaires envoyé par la fonction
for (int i = 0; i < num; i++)
//va_arg: paramètre1: le pointeur d'argument
// paramètre2: le type vers lequel doit pointer notre pointeur d'argument
cout << va_arg(arguments,char*) << "\n";
//termine le pointage (non essentiel dans ce contexte car la fonction termine)
va_end(arguments);
}
Conclusion :
Voila, maintenant c'est à vous d'en créer des variantes, du genre "Afficher en nombre illimité de MessageBox" ou "Ajouter un nombre illimité d'éléments dans une ListBox"
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.