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 d'extraction de string? [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut Probleme d'extraction de string?
    Bonjour

    J'ai une chaine de caractère: "il fait beau aujourd'hui" et je veux récupérer une partie de cette chaine de caractère (disons entre le caractère 14 et la fin de la string) je veux donc: "aujourd'hui".

    J'ai trouvé aucune fonction qui me permettent de faire cela facilement...
    Quelqu'un peut il m'aider?

    Merci

  2. #2
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <string.h>
     
     
    int main(void)
     {
     char s[]="il fait beau aujourd'hui";
     char t[256];
     
     strcpy(t,s+13);
     printf("Extrait: %s\n",t);
     return 0;
     }

  3. #3
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #define CONSTLIT_LG(s)   (sizeof(s) - 1)
     
    int main(void)
    {
     const char s[] = "il fait beau aujourd'hui";
     const char * sub = s + CONSTLIT_LG("il fait beau ");
     printf ("\"%s\"\n", sub);
     return 0;
    }
    bon par contre, je suis pas sur que ma bidouille soit cross-platform

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut
    stephl tu es sur qu'il fonctionne ton code....moi je récupère toujours une chaine vide

  5. #5
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par UnSofteuxAmateur
    stephl tu es sur qu'il fonctionne ton code....moi je récupère toujours une chaine vide
    Etrange... Je l'avais testé avant de le poster et je l'ai testé de nouveau après lecture de votre message, et cela fonctionne. Avez-vous essayé mon code tel quel ou bien l'avez-vous modifié?

  6. #6
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par UnSofteuxAmateur
    stephl tu es sur qu'il fonctionne ton code....moi je récupère toujours une chaine vide
    Je n'ai pas besoin de compiler pour savoir que ça fontionne et que le code de stephl est correct. C'est ce qu'il faut faire. La solution de Gruik est bonne aussi et évite en plus une copie, c'est élégant.

    Typiquement, pour une tâche comme cela, c'est strcpy() qu'on utilise. Si tu ne veux pas aller jusqu'à la fin de la chaîne pour ton extracttion, strncpy() est ton amie.

    A+

  7. #7
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par Foobar1329
    La solution de Gruik est bonne aussi et évite en plus une copie, c'est élégant.
    La solution que je propose ne nécessite pas une copie. J'ai juste supposé que UnSofteuxAmateur désirait extraire dans une autre chaîne. J'aurais pu juste faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
     
     
    int main(void)
     {
     char s[]="il fait beau aujourd'hui";
     
     printf("Extrait: %s\n",s+13);
     return 0;
     }

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Foobar1329
    Hello,



    Je n'ai pas besoin de compiler pour savoir que ça fontionne et que le code de stephl est correct. C'est ce qu'il faut faire. La solution de Gruik est bonne aussi et évite en plus une copie, c'est élégant.

    Typiquement, pour une tâche comme cela, c'est strcpy() qu'on utilise. Si tu ne veux pas aller jusqu'à la fin de la chaîne pour ton extracttion, strncpy() est ton amie.

    A+
    Le défaut de strncpy(), c'est qu'elle lit n caractères dans le tampon cible. Si le caractère nul '\0' ne fait pas partie des n caractères lus, celui-ci n'est pas placé dans le tampon de copie. Il faut donc le mettre soi-même. Pour cette raison, je préfère utiliser strncat() pour copier un bout de chaine (qui s'arrête avant le caractère nul de terminaison).

    Thierry

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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

Discussions similaires

  1. Probleme avec une chaine STRING !!!
    Par Bebert71 dans le forum C++
    Réponses: 10
    Dernier message: 09/05/2006, 09h29
  2. Probleme de cast de string en int
    Par Oberown dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/04/2006, 11h48
  3. Problème d'extraction d'un arbre...
    Par denissay dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/03/2006, 01h03
  4. Probleme d'extraction des champs nuls
    Par ETOKA dans le forum SQL
    Réponses: 2
    Dernier message: 17/01/2005, 11h03
  5. [LG]probleme avec l'identificateur STRINGE
    Par youth dans le forum Langage
    Réponses: 3
    Dernier message: 15/08/2003, 01h42

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