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 :

Utilisation de strtok


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Par défaut Utilisation de strtok
    Bonjour,

    je souhaiterais utiliser strtok mais le problème est que mon délimiteur est une chaine de caractères (!;!)

    Par exemple, je souhaiterais transformer toto!;!tata!;!titi en toto puis tata puis titi.
    Ce qui n'est visiblement pas possible avec strtok (puisqu'il prend une liste de délimiteurs comme paramètres...)

    Pourriez-vous me dire comment arriver à ce résultat, si possible avec une fonction aussi "simple" que strtok ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       char tab[]= "toto!;!tata!;!titi";
       char toto[32];
       char tata[32];
       char titi[32];
       sscanf(tab,"%[^!]%*3c%[^!]%*3c%[^!]", toto, tata,titi);

  3. #3
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    son séparateur est "!;!" et pas simplement '!'

    Si sa chaine a lire contiens une partie du délimiteur comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     char tab[]= "to!o!;!tata!;!titi";
    Cette solution ne marchera pas.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    je souhaiterais utiliser strtok mais le problème est que mon délimiteur est une chaine de caractères (!;!)
    Je ne sais pas s'il existe une fonction standard mais tu peux toujours t'en sortir sans, c'est simple.

    Exemple d'algorithme :
    1) On déclare deux pointeurs sur char nommé "debut" et "fin". On met "debut" avec l'adresse de la chaîne. On déclare "sortie_boucle" et on met à 0.
    2) On cherche la position de la sous-chaîne "!;!" (fonction "strstr") à partir de la position "debut".
    3) Si on ne la trouve pas, on cherche la position du caractère '\0' (avec la fonction "strchr") et on met "sortie_boucle" à 1.
    4) On écrase la valeur de "fin" avec l'adresse retournée par la fonction, et on retranche 1.
    5) On copie dans un tableau de char (celui dans lequel tu y mets tous les mots extraits) tout ce qui se trouve entre "debut" et "fin" (inclus).
    6) On rajoute un '\0' à la fin de ce tableau.
    7) Si "sortie_boucle" est à 1, on va à l'étape 10
    8) On rajoute 3 à "debut".
    9) On revient à l'étape 2.
    10) Suite programme...

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    strstr()

  6. #6
    Membre averti
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Je ne sais pas s'il existe une fonction standard mais tu peux toujours t'en sortir sans, c'est simple.

    Exemple d'algorithme :[...]
    Merci pour ta réponse jeroman.

    Je pensais à faire un truc du genre au cas où ouais. Je souhaitais quand même savoir s'il y avait aussi simple que strtok pour une chaîne de caractères.

Discussions similaires

  1. utilisation fonction strtok
    Par john123 dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2007, 11h58
  2. Utilisation de strtok
    Par Arnaud F. dans le forum C
    Réponses: 8
    Dernier message: 26/11/2006, 18h39
  3. utilisation de strtok
    Par ghostdog dans le forum C
    Réponses: 9
    Dernier message: 25/10/2005, 08h54
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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