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 :

Probleme avec strtok


Sujet :

C

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Probleme avec strtok
    Salut,

    Pour recupérer les arguments d'une fonction créé,par exemple pour une fonction:
    f(x,toto,test) = + * x toto test
    j'ai essayé de faire avec strtok(ligne,",") pour que j'ai uniquement les arguments de ma fonction car je gere les parentheses et le nom de la fonction.
    la fonction strtok me renvoie x toto test .
    En fait,je voudrais savoir comment il faut que je m'y prenne pour mettre les parametres de ma fonction dans un tableau de char *parametre[]

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je ne comprend pas exactement ce qui se passe dans l'état actuel des choses: strtok te renvoie "x toto test" (ce qui est un échec) ou "x","toto","test" (ce qui est OK) ?

    Si c'est le second cas, tu veux donc faire un tableau de chaînes avec ces paramètres au fur et à mesure que tu les extraits, c'est ça?

    Ce que je te conseille, c'est de commencer par en faire une liste chaînée (et tu insères chaque paramètre renvoyé par strtok() en tête de liste) tout en comptant ces paramètres.
    Quand tu as la liste complète, tu alloues l'espace pour un tableau de N pointeurs sur char (ou N+1, pour mettre le dernier à NULL) puis tu le remplis avec le contenu de la liste chaînée, en commençant par la fin du tableau (puisque la liste est remplie à l'envers). Alors, tu n'as plus qu'à supprimer la liste chaînée.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par Médinoc
    Je ne comprend pas exactement ce qui se passe dans l'état actuel des choses: strtok te renvoie "x toto test" (ce qui est un échec) ou "x","toto","test" (ce qui est OK) ?

    Si c'est le second cas, tu veux donc faire un tableau de chaînes avec ces paramètres au fur et à mesure que tu les extraits, c'est ça?

    Ce que je te conseille, c'est de commencer par en faire une liste chaînée (et tu insères chaque paramètre renvoyé par strtok() en tête de liste) tout en comptant ces paramètres.
    Quand tu as la liste complète, tu alloues l'espace pour un tableau de N pointeurs sur char (ou N+1, pour mettre le dernier à NULL) puis tu le remplis avec le contenu de la liste chaînée, en commençant par la fin du tableau (puisque la liste est remplie à l'envers). Alors, tu n'as plus qu'à supprimer la liste chaînée.
    Je te mets le code que j'ai écris en guise de test:
    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
     
    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
      char szBuffer [256];
      char sep[]  = " ,";
      char *token;   
     
      strcpy(szBuffer, "x  ,var      ,       toto");/*espace :au cas ou l'utilisateur mettrais du plus de blancs que prévus*/
     
      token = strtok(szBuffer, sep);
      while(token)
        {
          printf("%s ", token);
          token = strtok(NULL, sep);
        }
      return 0;
    }
    Dans la liste chainée ,il faut que j'insère à chaque fois les tokens de mon exemple c'est ça :

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Oui, c'est ça.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/01/2007, 14h11
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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