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 :

Fonction de récupération de portion de chaine


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut Fonction de récupération de portion de chaine
    Bonjour à tous et à toutes.

    Je suis à la recherche d'une fonction qui extrait d'une chaine de caractère une portion de cette même chaine. Connaîtriez-vous cette fonction, son proto et la librairie qu'elle nécessite ?

    J'ai regardé dans string.h mais n'ai rien trouvé... Mon but est d'utiliser dans un premier temps la fonction strchr pour trouver la localisation d'un caractère particulier dans ma chaîne passée en paramètre, puis de ne choper que la portion de chaîne qui m'intéresse ^_^.

    Bahan, désolé si cette question vous semble absurde... C'est que je connais très mal le langage C

  2. #2
    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
    J'utilise strncpy() qui copie un certains nombre de caracteres d'une chaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strncpy(zone_de_sortie_assez_grande, chaine_d_entree + offset_de_debut, longueur_a_extraire);
    Ne pas oublier de mettre le '\0' à la fin de la chaine extraite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zone_de_sortie_assez_grande[longueur_a_extraire] = '\0';

  3. #3
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut
    Merci pour ton aide.

    Bahan

  4. #4
    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
    Citation Envoyé par Gruik
    J'utilise strncpy() qui copie un certains nombre de caracteres d'une chaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strncpy(zone_de_sortie_assez_grande, chaine_d_entree + offset_de_debut, longueur_a_extraire);
    Ne pas oublier de mettre le '\0' à la fin de la chaine extraite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zone_de_sortie_assez_grande[longueur_a_extraire] = '\0';
    C'est pour ça que je préfère utiliser strncat(), car il place le 0 automatiquement. Seule précaution, s'assurer que la chaine de destination est bien vide (zone_de_sortie_assez_grande[0] = 0).

    Et dans tous les cas, laisser une place pour le 0 final...

  5. #5
    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
    On peut aussi creer une macro pour ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define STRSUB(out,in,start,lg)\
        do { strncpy(out, (in) + (start), lg); (out)[lg]='\0'; } while (0)
    Et pour se premunir des depassements de chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #define MIN(a,b) ((a)<(b)?(a):(b)))
    /*.. */
     
    char sortie[100];
     
    STRSUB(sortie, entree, debut_sous_chaine, MIN(longueur_sous_chaine, sizeof sortie));

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

Discussions similaires

  1. [Shell] Extraire portion de chaine
    Par lolo_ici_et_la dans le forum Linux
    Réponses: 1
    Dernier message: 20/08/2007, 07h44
  2. [MySQL] Utilisation des fonctions des récupérations des données
    Par Konrad Florczak dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2006, 15h17
  3. Réponses: 5
    Dernier message: 31/07/2006, 15h42
  4. appel de fonction sans récupération variable
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2006, 11h10
  5. Réponses: 2
    Dernier message: 24/04/2006, 14h48

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