Tableau de pointeur sur fonction C

Fermé
jean92 - 18 nov. 2011 à 22:23
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 nov. 2011 à 16:56
Bonjour,
j'aimerai faire un tableau de pointeur sur fonction, seulement je pense que je m'y prend très mal, les fonction retourne toute des int, mais prennent des arguments differents, mon code:
  int tab[4];

  tab[0] = (&my_putnbr_c)(int);
  tab[1] = (&my_putstr_c)(char*);
  tab[2] = (&my_putnbr_ascii_c)(char*);
  tab[3] = (&my_putbinaire_c)(int);
 



A voir également:

4 réponses

nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 18/11/2011 à 23:31
Hé oui, si tu veux appeler les fonctions de la même manière, il faut qu'elles aient les mêmes arguments, strictement...
Mais il y a une raison logique à cette problématique, c'est que si les arguments sont différents, la préparation avant appel est forcément différente également... donc à quoi bon appeler la même fonction ?
Je pense qu'il te faut repenser la manière de procéder, par exemple en incluant aux fonctions 'Put...' la récupération de l'information qu'elles doivent manipuler, et appeler de manière identique les fonctions, mais sans arguments. Ce n'est qu'une idée vague, il faudrait que tu précises l'objectif pour un meilleur conseil...
Le chêne aussi était un gland, avant d'être un chêne
0
Je dois recoder la fonction printf,
pour ne pas faire des if, else if, else if, else if [...]
on ma donnez comme conseil de faire un tableau de pointeur sur focntion afin, apres avoir identifier le caractere apres le %, envoyer l'argument suivant grace a un tableau de ptr sur fonction, mais je n'arrive pas à l'apliquer.
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
19 nov. 2011 à 00:06
Oui et c'est là le problème, si c'est bien comme je pense, la fonction printf est une fonction native, que le compilateur interprète en fonction du type à afficher et appelle des fonctions internes différentes... Et donc en externe tu ne pourras pas savoir quel est le type de la source à afficher.
Et là encore il faudrait que tu précises le contexte global des appels à printf dans ton programme pour que je puisse mieux t'aider, car le simple fait que tu passes par des conditions avant le printf indique qu'il faudrait plutôt retravailler le programme en aval...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
19 nov. 2011 à 16:56
Bonjour,

Pour recoder le printf, il te faut tout d'abord une fonction à nombre d'argument variable : int toto (const char*, ...);
Tu devras parser le const char* pour connaître le nombre d'argument et parcourir la va_list.
Ensuite, tu devras utiliser une va_list pour récupérer les arguments que tu devras convertir.
Etc.
En revanche, je ne vois pas comment tu peux utiliser le tableau de pointeurs sur fonction (enfin je vois surtout pas l'intérêt). T'auras juste un switch dans le corps de la fonction. Rien de mal. Si ?
0