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 :

Extraction d'une sous-chaine en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut Extraction d'une sous-chaine en C
    bonjour,
    je cherche une fonction prédéfini qui permet d'extraire une sous-chaine à partir d'une chaine de caractère s'il existe?
    merci de m'aider.

  2. #2
    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()

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut
    merci pour votre aide mais strstr() permet la recherche d'une chaine dans une autre chaine mais moi je cherche a extraire une sous-chaine à partir d'une chaine!
    par exemple: la chaine 'abcde' je cherche à extraire 'bcde'
    merci.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Bonjour,

    Citation Envoyé par mido1951 Voir le message
    merci pour votre aide mais strstr() permet la recherche d'une chaine dans une autre chaine mais moi je cherche a extraire une sous-chaine à partir d'une chaine! par exemple: la chaine 'abcde' je cherche à extraire 'bcde'
    merci.
    Il n'y a pas de type « chaîne de caractères » à proprement parler en langage C. On utilise des pointeurs « char * » ou « char const * », ce qui suffit la plupart du temps. Par contre, à quelques exceptions près, ces fonctions n'allouent pas la mémoire elles-mêmes.

    Ceci posé, pour extraire une sous-chaîne dans une chaîne plus longue, il suffit de pointer directement dessus. Ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    int main (void)
    {
        char const * chaine = "ABCDE";
     
        printf ("     Chaîne : %s\n",chaine);
        printf ("Sous-chaîne : %s\n",chaine+1);
     
        return 0;
    }
    Te renverra exactement ce que tu cherches. Par contre, la fin d'une chaîne de caractères est matérialisée par un caractère nul « '\0' ». Donc, pour extraire seulement « BCD », il faut soit aller placer manuellement un caractère nul à la place du E (et donc écraser la chaîne originale), soit recopier exactement la longueur qui t'intéresse vers un buffer avec strncpy(), ce qui est ce que tu veux faire :

    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
    #include <stdio.h>
    #include <string.h>
     
    int main (void)
    {
        const char * chaine = "ABCDE";
        char buffer[16] = { 0 };
     
        strncpy (buffer,chaine+1,3);
     
        printf ("     Chaîne : %s\n",chaine);
        printf ("Sous-chaîne : %s\n",buffer);
     
        return 0;
    }
    Enfin, beaucoup de fonctions, à l'instar de strncpy(), permettent de spécifier directement une taille, ce qui permet de travailler sur la chaîne originale sans avoir à la recopier. C'est notamment le cas de printf(), où tu peux utiliser le champ normalement réservé à la précision des nombres pour spécifier la taille de la sous-chaîne à afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
     
    int main (void)
    {
        char const * chaine = "ABCDE";
     
        printf ("%.3s\n",chaine+1);
        return 0;
    }

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut
    merci beaucoup pour votre aide

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Citation Envoyé par mido1951 Voir le message
    merci beaucoup pour votre aide
    N'oublie pas !

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

Discussions similaires

  1. Extraction d'une sous-chaine de caractère
    Par ninsekh dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 22/04/2008, 08h13
  2. [Bash] : extraction d'une sous chaine
    Par julio_097 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/08/2007, 19h33
  3. Extraction d'une sous-chaine à partir d'une chaine principale
    Par gazere dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/06/2007, 04h08
  4. Extraction d'une sous-chaine
    Par adurand dans le forum Linux
    Réponses: 2
    Dernier message: 17/03/2007, 17h35
  5. [RegEx] extraction d'une sous chaine
    Par zulkifli dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2006, 13h27

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