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

Réseau C Discussion :

Appel d'une fonction à nombre de paramètres variable


Sujet :

Réseau C

  1. #1
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut Appel d'une fonction à nombre de paramètres variable
    Bonjour,

    Voici mon problème:
    Depuis peu, je crée des "wrappers", c'est-à-dire des fonctions qui encapsulent d'autres fonctions, spécialement pour les appels système. Cela me permet de mieux appréhender les erreurs. Par exemple, au lieu d'appeler directement la fonction "socket( )", j'appelle "w_socket( )" qui a la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int w_socket(int domain, int type, int protocol)
    {
        int retValue = socket(domain, type, protocol);
     
        if (retValue == -1)
        {
            err_sys("w_socket()");
        }
        return retValue;
    }
    avec la fonction "err_sys( )" qui utilise "strerror(errno)" et qui envoie les messages d'erreur en clair dans un fichier ou utilise syslog (Linux).
    Tout allait bien jusqu'au moment ou j'ai voulu mettre un wrapper autour de "sscanf( )":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int w_sscanf(const char* s, const char* format, ...)
    {
        int retValue = sscanf(s, format, ...);   /* comment écrire l'appel ici ? */
     
        if (retValue == EOF)
        {
            err_sys("w_sscanf()");
        }
        return retValue;
    }
    Ma question est:
    Comment appeler la fonction "sscanf( )" ne connaissant pas ses paramètres?

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Il faut utiliser : vsscanf()
    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
    #include <stdio.h>
    #include <stdarg.h>
     
    int w_sscanf(const char* s, const char* format, ...)
    {
        va_list arg;
     
        va_start(arg, format);
        int retValue = vsscanf(s, format, arg);
        va_end(arg);
     
        if (retValue == EOF)
        {
            err_sys("w_sscanf()");
        }
        return retValue;
    }

    Thierry

  3. #3
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonjour Thierry,

    Je n'étais plus très loin de la solution. Merci de me l'apporter sur un plateau, c'est très clair et compréhensible.

    Jean-Michel.

    PS: hier j'ai eu un message de aoyou qui m'expliquait dans quelle direction aller. Aujourd'hui son message a disparu mais il y a celui de Thierry qui me donne directement la solution. C'est très bien, mais c'est étrange...

Discussions similaires

  1. Fonction à nombre de paramètres variable
    Par Noufnouf dans le forum Scheme
    Réponses: 1
    Dernier message: 06/04/2011, 11h01
  2. Appel d'une fonction avec plusieurs paramètres
    Par kazarn dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/06/2009, 18h55
  3. Réponses: 13
    Dernier message: 17/01/2007, 13h18
  4. Réponses: 11
    Dernier message: 30/03/2006, 15h39
  5. Réponses: 2
    Dernier message: 09/01/2006, 09h38

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