Partage
  • Partager sur Facebook
  • Partager sur Twitter

passer va_list a plusieurs fonctions

Sujet résolu
    18 février 2017 à 16:28:28

    salut a tous !

    Je suis en train de programmer une bibliotheque et au bout d'un moment je tombe sur un bout de code qui ressemble a ça :

    #include <stdarg.h>
    #include <string.h>
    
    
    void Y (char a, va_list ap) {
        // faire quelque chose 
    }
    
    void X (char *a, va_list ap) {
         size_t size = strlen (a);
    
         for (size_t i = 0; i < size; i++) {
              Y (a[i], ap); // même arguments pour tous
         }
    }

    Autrement dit, X applique Y a toutes les lettres de la chaine de caractère avec a chaque fois les mêmes arguments.

    je me demandais si il était possible de faire quelque chose comme ça et, si c'est possible,
    ou placer va_start et va_end (dans la fonction X ? la fonction Y ? les deux ?)

    merci d'avoir lu, j'espère vite trouver une réponse !

    EDIT :

    Après avoir fait 2/3 experimentations j'ai réussit a resoudre mon problème tout seuls.
    Pour ceux qui sont interessé (on ne sait jamais) :

    #include <stdarg.h>
    #include <string.h>
    
    void Y (char a, va_list ap) {
         // faire quelque chose
    }
    
    void X (char *a, va_list ap) {
         size_t size = strlen (a);
         
         va_start (ap, a);
         for (size_t i = 0; i < size; i++) {
              va_list op;
              va_copy (op, ap);
              Y (a[i], op);
              va_end (op);
         }
         va_end (ap);
    }

    marche bien. Merci quand meme !

    -
    Edité par BalthazarMoonset 18 février 2017 à 18:39:23

    • Partager sur Facebook
    • Partager sur Twitter

    passer va_list a plusieurs fonctions

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown