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++Builder Discussion :

lire une chaine ( sscanf )


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut lire une chaine ( sscanf )
    bonjour,

    a partir d'un fichier texte, je recupere chaque ligne pour les traiter ultérieurement
    dans chaque ligne, il y a plusieurs champs séparés par des '>'.
    et dans chaque champs il peut y avoir des chaines soit simple ( "texte" ) soit multiple ( "un texte de mots" ) et parfois il peut n'y avoir aucune chaine dans un champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sscanf( line.c_str(),
                        " %*s > %s > %s > %s > %s > %s > %*s %s > %s >" // ligne 1              
                       ,&tDonnees[0][0][0], &tDonnees[0][1][0], &tDonnees[0][2][0],&tDonnees[0][3][0], &tDonnees[0][4][0], &tDonnees[0][5][0], &tDonnees[0][6][0]
    );
    j'arrive a recuperer normalement les différents champs lorsque chaque champs sont plein, mais lorsque que je me retrouve avec un champs vide, mon programme n'arrive plus a recuperer mes données ( je me retrouve avec des cases vides dans tDonnees )
    or sscanf prends comme séparateur un espace il me semble, or j'aimerais bien spécifié mon '>' comme séparateur de champs.

    merci pour l'aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Par défaut
    enleve tes espaces et essaye normalement sa doit etre bon

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nizzart
    enleve tes espaces et essaye normalement sa doit etre bon
    je peux pas les enlever je suis obliger de garder les espaces.

  4. #4
    Invité
    Invité(e)
    Par défaut
    donc j'ai resolu mon probleme, voici comment j'ai proceder si sa peut servir a quelqu'un plus tard.


    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
     
    // chaine =  texte > texte > texte > texte > texte
    // le mot texte correspondant a des chaines de caractères
     
     
    void TForm1::trierLigne( const char* chaine )
    {
       char* pch;
       char* str;
       int i = 0;
       int j = 0;
     
     
       str = strdup( chaine );
       pch = strtok( str, ">" );
       strcpy( tDonnees[j][i++], pch );
       while( pch != NULL )
       {
          //pch = strtok( NULL , ">");
          pch = strtok( NULL , ">");
          if( pch != NULL )
          {
             strcpy( tDonnees[j][i++], pch );
     
    // code spécifique a mon programme     
    // ...
    // ..
    // .
     
          }
       }
    }

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

Discussions similaires

  1. lire une chaine qui est entre 2 symboles '
    Par tibofo dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 01/12/2008, 23h05
  2. [sscanf] Lire une chaine formatée contenant des []
    Par gangsoleil dans le forum Bibliothèque standard
    Réponses: 3
    Dernier message: 11/09/2008, 09h09
  3. sizeof dans une fonction pour lire une chaine
    Par Haze. dans le forum Débuter
    Réponses: 11
    Dernier message: 06/11/2007, 12h07
  4. Lire une chaine par la fin
    Par Electroniktor dans le forum C
    Réponses: 8
    Dernier message: 14/07/2007, 16h42
  5. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37

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