IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Paramètre variable d'une fonction à une autre...


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 8
    Points
    8
    Par défaut [Résolu] Paramètre variable d'une fonction à une autre...
    Bonjour,

    Voilà j'aimerais si il est possible de passer une liste de paramètre variable que j'ai en entrée d'une fonction à une autre fonction...

    J'ai essayé en utilisant le code suivant mais cela ne semble pas fonctionner:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include <stdlib.h>
    #include <stdio.h>
    #include <stdarg.h>
     
    void f1(char *format_p, ...)
    {
       va_list va;
     
       char    *name_p = NULL;
     
       va_start(va, format_p);
       name_p = va_arg(va, char *);
       fprintf(stdout, "format = [%s] name = [%s]\n", format_p, name_p);
       va_end(va);
    }
     
    void f0(char *format_p, ...)
    {
       va_list va;
     
       va_start(va, format_p);
       f1(format_p, va);
       va_end(va);
    }
     
    int main() {
     
       f0("AA", "label");
     
       return 1;
    }
    Merci pour votre aide

    Cdt

    VF

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Paramètre variable d'une fonction à une autre...
    Citation Envoyé par vfanelia
    Voilà j'aimerais [savoir] si il est possible de passer une liste de paramètre variable que j'ai en entrée d'une fonction à une autre fonction...
    Non. Il faut passer par les formats va. Bien lire le chapitre sur <stdarg.h>

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: Paramètre variable d'une fonction à une autre...
    Bonjour et bienvnue sur ce magnifique forum,

    essai plutot ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdlib.h>
    #include <stdio.h>
    #include <stdarg.h>
     
    void f1(char *format_p, va_list va) /* --> c'est la que ça change !! */
    {
       char    *name_p = NULL;
     
       va_start(va, format_p);
       name_p = va_arg(va, char *);
       fprintf(stdout, "format = [%s] name = [%s]\n", format_p, name_p);
       va_end(va);
    }
     
    void f0(char *format_p, ...)
    {
       va_list va;
     
       va_start(va, format_p);
       f1(format_p, va);
       va_end(va);
    }
     
    int main() {
     
       f0("AA", "label");
     
       return 1;
    }
    Je n'est pas essayer mais ça doit pas être mal! (je suis plutot en forme aujourd'hui )

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Au sinon, j'ai essayé ton exemple de code mais j'ai l'erreur suivante:
    arg.c: In function `f1':
    arg.c:13: `va_start' used in function with fixed args


    A+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    En faites, c'était presque correct, il suffisait d'enlever l'appel à va_start et va_end dans la fonction f1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include <stdlib.h> 
    #include <stdio.h> 
    #include <stdarg.h> 
     
    void f1(char *format_p, va_list va) /* --> c'est la que ça change !! */ 
    { 
       char    *name_p = NULL; 
     
       name_p = va_arg(va, char *); 
       fprintf(stdout, "format = [%s] name = [%s]\n", format_p, name_p); 
    } 
     
    void f0(char *format_p, ...) 
    { 
       va_list va; 
     
       va_start(va, format_p); 
       f1(format_p, va); 
       va_end(va); 
    } 
     
    int main() { 
     
       f0("AA", "label"); 
     
       return 1; 
    }
    Merci pour votre aide

    a+

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par vfanelia
    En faites, c'était presque correct, il suffisait d'enlever l'appel à va_start et va_end dans la fonction f1:
    Je n'avais pas vue va_start dans la fonction f1, effectivement, il faut l'utiliser qu'une fois dans la fonction à paramètres variables.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appliquer une fonction à une fonction
    Par stracoma dans le forum C++
    Réponses: 6
    Dernier message: 20/03/2015, 16h35
  2. Réponses: 1
    Dernier message: 14/11/2009, 07h07
  3. Réponses: 6
    Dernier message: 30/10/2007, 12h27
  4. passer en paramettre d'une fonction une fonction
    Par RoM3Ro dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/06/2006, 15h54
  5. passer une variable d'une fonction à une autre
    Par Psyion dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/12/2005, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo