Problème de paramètre

Signaler
Messages postés
83
Date d'inscription
mardi 24 février 2004
Statut
Membre
Dernière intervention
10 mars 2006
-
Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006
-
bonjour,

je voudrais faire une fonction mais le nombre de paramètre à transmettre n'est pas fixe, et je voudrais savoir comment il faut faire.
C'est le même principe que la fonction printf.

Merci d'avance

6 réponses

Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

Bonjour,
Dans une de mes source tu trouvera un exemple : http://www.cppfrance.com/code.aspx?id=25769
Regarde les fonctions :
// Déclaration des fonctions
extern void fTelecharge_HTTP ( unsigned short f_Nb_Arg , // Nombre de fichier à télécharger
char f_Arg_Source [ 256 ] , // Répertoire ou télécharger les fichiers sur server WEB
char f_Arg_Destination [ 256 ] , // Répertoire ou copier les fichiers en local
... ) ;

extern void fUL_FTP( unsigned short f_Nb_Arg , // Nombre de fichier à télécharger
char f_Arg_Server [ 256 ] , // DNS ou IP du serveur ou récupérer les fichiers
char f_Arg_User [ 256 ] , // Nom d'utilisateur pour le FTP
char f_Arg_Pass [ 256 ] , // Mot de passe
char f_Arg_Source [ 256 ] , // Répertoire ou les fichiers sont stockés en local
char f_Arg_Destination [ 256 ] , // Répertoire ou copier les fichiers sur le FTP
... ) ; // Listes des fichiers à récuperer

Ces fonctions permette de passer en parametre un nombre illimité de fichiers en parametre.
Bon courage.
Messages postés
115
Date d'inscription
mardi 1 février 2005
Statut
Membre
Dernière intervention
8 octobre 2007

Mets des valeurs par default dans les parametres de ta fonction

Lorsque tu definis ton prototype


void fct(int a=0,char * b="",float c=0.0);



quand tu appelles fct(10,"12"); => c = 0.0





Mais le probleme c'est qu'il faut respecter l'ordre des parametres

exemple tu ne peux faire ca

{code]

fct("10"); // car le premier parametre est un entier

/* ainsi de suite */

/code
Messages postés
83
Date d'inscription
mardi 24 février 2004
Statut
Membre
Dernière intervention
10 mars 2006

j'ai regardé tes fonctions yserver.

si j'ai bien compris c'est le ",..." qui permet de transmettre autant de paramètre que l'on veut. Mais après comment on fait pour les récupérer et comment sait a quelle adresse ils se trouvent ?
Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

oui c'est les ... qui permette de passer autant de parametre. Pour recuperer les argument va voir ma source y a juste une petite boucle de traitement pour recuperer les arguments.
Va voir la source la ou sont definit les fonctions.

Bon courage.
Messages postés
83
Date d'inscription
mardi 24 février 2004
Statut
Membre
Dernière intervention
10 mars 2006

j'ai regardé ton prog, mais je pige pas ces deux lignes :

va_list f_Arg_Fichier ; // Définition du pointeur
va_start ( f_Arg_Fichier , f_Arg_Destination ) ; // Initialisation du pointeur sur le premier des arguments
Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

ce sont des macro soit tu les utilise tel quel et ca marche moyennant adaptation, soit tu va faire un tour ds un cours si les commentaire suffise pas.

Bon courage.