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 :

Découpage d'une chaine de charactère


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut Découpage d'une chaine de charactère
    Bonsoir,

    Le titre n'est peut être pas le plus "juste". Voici le problème que je dois régler.

    Une fonction reçoit en paramètre une chaine de caractère dont le contenu doit être extrait suivant un format lui aussi fourni en paramètre. Le format est variable et dépend d'un traitement en amont.
    Bien attendu le nombre de "sous chaines" à extraire est variable.

    Je pensais utiliser la fonction sscanf(...), mais voila je ne sais pas combien de variables lui fournir (nombre non connu lors de la compilation). J'ai donc essayer en passant un tableau et en croisant les doigts, mais j'obtiens une erreur mémoire lors de l'exécution lorsque le format contient plus d'une valeur à extraire (ex:"%1c%4c%2c").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int ParseMsg(char *Msg, char *Format) {
        char Values [MAX-ITEM][SIZE];
     
        ParamNbr = sscanf(Msg, Format, Values);
        ....
    }

    Après recherche j'ai essayé d'utiliser la fonction vsscanf qui elle accepte une liste d'arguments, mais sans succès. Là j'obtiens une erreur lors de la compilation (mingw sous Windows).
    L'erreur est: "error: 'va_start' used in function with fixed arg"

    Pour info la fonction appelante lit le format dans un tableau. Le format n'est donc pas construit par le programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int ParseMsg(char *Msg, char *Format ){
        va_list PrmLsts;
     
        va_start(PrmLsts, Format);
        ParamNbr = vsscanf(Msg, Format, PrmLsts);
     
        va_end(PrmLsts);
        . . . 
    }
    Et voila je me retrouve bloqué.

    Merci pour votre aide.


    Bon week-end.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Voici la syntaxe de la déclaration d'une fonction à nombre variable d'arguments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int ParseMsg(char *Msg, char *Format, ... ){
    // le code
    }
    Les points de suspension font partie de la syntaxe et sont nécessaires.

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Merci Nudger.

    A la lecture de ta réponse, je comprends que l'utilisation de va_list n'est utile que pour récupérer les paramètres variables de la fonction contenant le code. Je comprend donc que cela ne me permet pas d'utiliser vsscan.

    Je pense donc m'orienter vers l'écriture du fonction identique à scanf mais stockant les différentes valeurs dans un tableau de valeurs passé en paramètre.

    Bonne soirée et bon week-end.

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/04/2007, 13h01
  2. [VBA-E] test sur une chaine de charactère
    Par gruget dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/04/2006, 14h24
  3. Découpage d'une chaine de caractères
    Par fab3131 dans le forum MFC
    Réponses: 2
    Dernier message: 08/04/2006, 16h46
  4. Découpage d'une chaine
    Par krfa1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/10/2005, 12h33
  5. découpage d'une chaine de caractère
    Par lamojuli dans le forum ASP
    Réponses: 4
    Dernier message: 13/05/2004, 15h00

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