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 :

récupérer une partie d'un char*


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut récupérer une partie d'un char*
    Bonjour à tous,

    je ne sais pas si c'est moi qui ait du mal ce matin, mais je ne parviens pas à trouver comment récupérer une partie de mon char*!

    Je vous explique mon problème, vous pourrez peut-être m'expliquer une solution simple:
    J'ai un char* buffer, et je voudrais le découper en sous-chaînes en fonction de mots-clé.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char* strTest = "Bonjour à tous, je ne sais pas si c'est moi qui";
    MaFonction(strTest, "tous", strResult);
    Et je voudrais savoir comment implémenter MaFonction(char* buffer, char* motCle, char* result); pour qu'elle me renvoie, par exemple, la sous chaîne composée de tout ce qu'il y a avant le mot clé. Dans mon exemple, elle mettrait result = "Bonjour à ";

    J'espère que je suis clair

    Merci.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: récupérer une partie d'un char*
    Citation Envoyé par r0d
    Je vous explique mon problème, vous pourrez peut-être m'expliquer une solution simple:

    J'ai un char* buffer, et je voudrais le découper en sous-chaînes en fonction de mots-clé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char* strTest = "Bonjour à tous, je ne sais pas si c'est moi qui";
    MaFonction(strTest, "tous", strResult);
    C'est mal parti, parce que strTest pointe sur une chaine non modifiable. Soit tu fais des copies de sous chaines, soit tu modifies l'original en rempaçant les séparateurs par des 0. Dans ce cas, la chaine doit être codée sous la forme d'un tableau de char :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char strTest[] = "Bonjour à tous, je ne sais pas si c'est moi qui";
    Notas :
    • strtok() fait ce que tu veux (pratique pour du quick'n dirty)...
    • strto_r() est mieux (POSIX)
    • sinon, j'utilise mon objet TOK :

    http://emmanuel-delahaye.developpez.com/clib.htm
    Module TOK

  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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,
    strtok devrait t'aider :
    II-N. strtok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *strtok (char *s, const char *t);
    Cette fonction décompose la chaîne s en sous-chaîne délimitées par un caractère appartenant à ct. Un appel ultérieur à strtok avec s égale à NULL, retourne la sous-chaîne suivante ; ct peut être différent à chaque appel.
    La chaîne passée en argument est modifiée par la fonction : elle ajoute un caractère de fin de chaîne à la place du séparateur.
    Tu peux faire une fonction qui découpe une chaîne en un tableau de chaîne grâce à strtok, le code et les explications Lundi prochain

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut Re: récupérer une partie d'un char*
    Merci pour vos réponses.
    Citation Envoyé par Emmanuel Delahaye
    strtok() fait ce que tu veux (pratique pour du quick'n dirty)...
    Erf, il faut que ce soit du code nickel chrome...

    Citation Envoyé par Emmanuel Delahaye
    strto_r() est mieux (POSIX)
    je vais essayer ça

    Citation Envoyé par Emmanuel Delahaye
    sinon, j'utilise mon objet TOK :[/list]
    http://emmanuel-delahaye.developpez.com/clib.htm
    Module TOK
    Erf, c'est un projet c++ en fait, ça ne compilera pas

    P.S: ouioui, c'est un projet c++, mais ce bout de code doit être en C ^^

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: récupérer une partie d'un char*
    Citation Envoyé par r0d
    Citation Envoyé par Emmanuel Delahaye
    sinon, j'utilise mon objet TOK :[/list]
    http://emmanuel-delahaye.developpez.com/clib.htm
    Module TOK
    Erf, c'est un projet c++ en fait, ça ne compilera pas

    P.S: ouioui, c'est un projet c++, mais ce bout de code doit être en C ^^
    Dans un projet C++, tu as le droit d'avoir un fichier compilé en C. Faut juste pas se tromper dans la gestion de projet, et les extension du fichier, c'est tout. On code est fait pour ça, les headers sont C ou C++, et les sources ne compilent pas en C++, comme ça on sait tout de suite si on s'est trompé de compilateur ou non.

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut
    Ok, je te remercie pour ces précisions.
    Cependant, je me suis débrouillé avec strto_r(), et ça fonctionne bien

    Encore

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

Discussions similaires

  1. [Tableaux] Récupérer une partie d'une variable
    Par griese dans le forum Langage
    Réponses: 3
    Dernier message: 26/07/2006, 17h20
  2. [VBA-E]Récupérer une partie d'un nom
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 28/04/2006, 08h38
  3. Récupérer une partie d'une page php d'un autre site
    Par 73qro dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/03/2006, 17h22
  4. comment récupérer une partie d'une chaine
    Par yannickrohel dans le forum C
    Réponses: 7
    Dernier message: 27/02/2006, 10h31
  5. Récupérer une partie d'une chaine de caractère
    Par Cyborg289 dans le forum Langage
    Réponses: 5
    Dernier message: 07/07/2005, 14h06

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