Fonction style printf en c / c++
Résolu/Fermé
A voir également:
- Fonction style printf en c / c++
- Fonction si et - Guide
- Style word - Guide
- Fonction moyenne excel - Guide
- Photo de profil stylé - Guide
- Fonction somme excel - Guide
6 réponses
bon, en fait, ca se fait grace au va_list. cf le code pompé sur ce site:
https://codes-sources.commentcamarche.net/
void MaFonction(int x,...)
{
va_list vargs; /* Liste d'arguments optionnels */
/* La liste d'arguments commence après le dernier argument formel */
va_start(vargs,x);
/* Récupération d'un argument de type int */
width=va_arg(vargs,int);
/* Récupération d'un argument de type char */
width=va_arg(vargs,char);
/* Fin de lecture de la liste optionnelle */
va_end(vargs);
}
aussi ce site:
http://homepage.mac.com/pierremousel/LangC/LangCArgumentsVar.html
voila... dans le printf, il n y a plus qu a parser le premier argument pour savoir quels type de variable on recupère...
merci daron pour ton aide.
https://codes-sources.commentcamarche.net/
void MaFonction(int x,...)
{
va_list vargs; /* Liste d'arguments optionnels */
/* La liste d'arguments commence après le dernier argument formel */
va_start(vargs,x);
/* Récupération d'un argument de type int */
width=va_arg(vargs,int);
/* Récupération d'un argument de type char */
width=va_arg(vargs,char);
/* Fin de lecture de la liste optionnelle */
va_end(vargs);
}
aussi ce site:
http://homepage.mac.com/pierremousel/LangC/LangCArgumentsVar.html
voila... dans le printf, il n y a plus qu a parser le premier argument pour savoir quels type de variable on recupère...
merci daron pour ton aide.
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
20 mai 2008 à 11:04
20 mai 2008 à 11:04
peut-etre en prenant deux liste en parametre :
-une liste sur les type que tu as défini
-une liste de pointeur sur les parametres
comme ça tu n'as pas de taille fixe de parametre, enfin essaie mais je pense que cela peut marcher, genre fais un type enumérer pour tes types de parametres ...
bon courage
tchû
-une liste sur les type que tu as défini
-une liste de pointeur sur les parametres
comme ça tu n'as pas de taille fixe de parametre, enfin essaie mais je pense que cela peut marcher, genre fais un type enumérer pour tes types de parametres ...
bon courage
tchû
Ca semble une bonne idée de remplacement, mais cela ne correspond pas a ce qui est utilisé pour un printf, auquel on peut passer indiferement des char*, int, char, ....
la definition de la fonction dans stdio.h est:
_CRTIMP int __cdecl printf(const char *, ...);
les ... semblent representer l infinité de parametres possible, et tres probablement on doit recuperer des tableaux quelque part, uin genre de argc, argv[], puis une liste de types aussi comme tu le suggérais ...
la definition de la fonction dans stdio.h est:
_CRTIMP int __cdecl printf(const char *, ...);
les ... semblent representer l infinité de parametres possible, et tres probablement on doit recuperer des tableaux quelque part, uin genre de argc, argv[], puis une liste de types aussi comme tu le suggérais ...
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
20 mai 2008 à 11:49
20 mai 2008 à 11:49
peut etre mais il te faudra par la suite parser ton const char * pour savoir ce qu'il se trouve à l'intérieur
good luck
good luck
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui, bien sur, printf parse le const char*, mais mon but n'est pas de réécrire la fonction priintf, c est juste qu'en ce moment je tape de code toute la journée, et je me demandais quel pouvait bien être le code source derriere cette fonction.
Ceci dit, je pense que tu me met sur la voie concernant le type des parametres: peut être qu il n est pas indiqué, mais qu'il est déduit grace a la chaine de format de données ...
ce qui remplacerait le probleme par celui ci:
existe t il un moyen d acceder aux parametres SANS connaitre leur nom, juste en connaissant leur numero d ordre de passage sur la pile... autrement dit, savez vous acceder a la pile d appels de fonctions ... trouver un petit void parameters** quelque part ....
Je rapelle que c est juste une curiosité sur la programmation en C, et je n en ai pas vriament l utilité.. juste pour étanche ma soif de connaissances...
Ceci dit, je pense que tu me met sur la voie concernant le type des parametres: peut être qu il n est pas indiqué, mais qu'il est déduit grace a la chaine de format de données ...
ce qui remplacerait le probleme par celui ci:
existe t il un moyen d acceder aux parametres SANS connaitre leur nom, juste en connaissant leur numero d ordre de passage sur la pile... autrement dit, savez vous acceder a la pile d appels de fonctions ... trouver un petit void parameters** quelque part ....
Je rapelle que c est juste une curiosité sur la programmation en C, et je n en ai pas vriament l utilité.. juste pour étanche ma soif de connaissances...
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
20 mai 2008 à 12:08
20 mai 2008 à 12:08
là je ne peux plus t'aider, désolé
tchû
tchû
Je pense honnetement que peux de personne sont interessées par le fonctionnement de ce genre de fonctions.... je trouve ca dommage vu que quand on voit la puissance des fonctions telles que sscanf ...
je vais devoir telecharger le code source d un compilateur en esperant y comprendre qqch...
j ai bien trouvé quelqu un qui utilisait sur http://www.koders.com/cpp/fid8B1917003A37987BF74F4FD460B7B816B156FFE4.aspx
mais je susi pas sur de pouvoir en faire qqch ...
je vais devoir telecharger le code source d un compilateur en esperant y comprendre qqch...
j ai bien trouvé quelqu un qui utilisait sur http://www.koders.com/cpp/fid8B1917003A37987BF74F4FD460B7B816B156FFE4.aspx
mais je susi pas sur de pouvoir en faire qqch ...