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 :

decoupage de chaine / separateurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut decoupage de chaine / separateurs
    Bonjour, je cherche a créer une fonction de découpage de chaine selon des separateurs et récupération dans un tableau des sous-chaînes (jusque la vous me direz qu'il existe deja strtok) mais qui garderait les separateurs dans ce tableau.

    Voici le domaine: je tiens a decouper des chaines d'instructions du type "j = i+1;" par exemple et recuperer {'j'; 'i'; '+'; '1'; ';'} pour pouvoir travailler sur les noms des variables et recréer la chaine d'instructions. La découpe se fait selon les separateurs {' '; '+'; '-'; ...} mais la fonction strtok ne permet pas de récupérer les separateurs (enfin a ma connaissance).

    J'attends vos réponses avec impatience pour continuer mon programme .

  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
    Citation Envoyé par Gougnaf Voir le message
    Bonjour, je cherche a créer une fonction de découpage de chaine selon des separateurs et récupération dans un tableau des sous-chaînes (jusque la vous me direz qu'il existe deja strtok) mais qui garderait les separateurs dans ce tableau.

    Voici le domaine: je tiens a decouper des chaines d'instructions du type "j = i+1;" par exemple et recuperer {'j'; 'i'; '+'; '1'; ';'} pour pouvoir travailler sur les noms des variables et recréer la chaine d'instructions. La découpe se fait selon les separateurs {' '; '+'; '-'; ...} mais la fonction strtok ne permet pas de récupérer les separateurs (enfin a ma connaissance).
    Il faut écrire la fonction toi-même.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut
    je me doutais qu'il fallait coder soit meme une fonction mais je me demandais si vous auriez des exemples d'utilisation de certaines fonctions de traitements de chaîne qui m'aideraient.

    Je vois 2 options:
    - parcours de la chaine caractère par caractère avec buffer et verification de separateur.
    - recherche d'un separateur dans la chaine, copie de la sous chaine le précédent et effacage de celle ci et du séparateur, puis retraitement...

    Si vous avez d'autres idées plus simples/optimisées ou si vous avez déja des exemples de traitements similaires je suis preneur

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    int afficher_decoupes(const char * chaine)
    {
        int ret = 0;
     
        size_t len = strlen(chaine);
        char * mot = malloc(len + 1);
     
        if (mot == NULL)
            ret = 1; /* Erreur */
        else
        {
            size_t i = 0, j = 0;
            char c;
     
            do
            {
                c = chaine[i];
     
                if (isseparator(c))
                {
                    mot[j] = '\0';
                    printf("%s\n%c\n", mot, c);
                    j = 0;
                }
                else
                {
                    mot[j] = c;
                    j++;
                }
     
                i++;
            }
            while (c != '\0');
     
            free(mot);
        }
     
        return ret;
    }
    isseparator est une fonction (ou une macro) que tu implémenteras. Pour quoi pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define is_separator(c) (isspace(c) || ispunct(c))
    isspace et ispunct sont déclarés dans ctype.h.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut
    merci beaucoup. pile poil ce qu'il me fallait. Ca va me permettre de continuer a avancer.

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

Discussions similaires

  1. Problème avec un decoupage de chaine
    Par Xenon03 dans le forum ASP
    Réponses: 5
    Dernier message: 17/04/2009, 15h39
  2. Decoupage de chaine
    Par julinho99 dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2008, 13h07
  3. [POO] Decoupage de chaine et objet
    Par bobspike dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/06/2008, 15h32
  4. quel est le decoupage de chaine le + rapide
    Par jerome86600 dans le forum C++
    Réponses: 21
    Dernier message: 20/07/2006, 18h30
  5. [RegEx] Preg_split decoupage de chaine
    Par Dargos dans le forum Langage
    Réponses: 6
    Dernier message: 10/04/2006, 10h32

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