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 :

parseur de fichier


Sujet :

C

  1. #1
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut parseur de fichier
    Bonjour,
    je cherche des fonctions permettant d'explorer de façon intelligente des fichiers. Sans avoir à mettre dans un tampon la totalité du fichier

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [STEP1]
    toto tata titi tonton
    [STEP2]
    ...txt...
    Je voudrais récupérer la chaine toto tata titi tonton comprise entre [STEP*]

    J'espére avoir était clair

    Merci.
    Si tu ne te plantes pas, comment veux tu pousser?

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    y a fseek (et ftell) qui permet de se positionner a un endroit particulier du fichier

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Points : 125
    Points
    125
    Par défaut
    Tu pourrais utiliser yylex, ou tes fonctions à toi, ou t'orienter vers un autre langage tel que sed.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Si tu connais le libellé des tags, ça s'écrit assez facilement avec des fgets.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Points : 125
    Points
    125
    Par défaut
    ça s'écrit assez facilement avec des fgets
    Pas forcément... Est-ce que [STEP1] (ou [STEP2]) est un token, un symbole terminale? Si oui, pas de problème. Si [ et STEP1 peuvent être séparés par des espaces, alors le mieux est de faire sa propre fonction fgets() (qui ne prend en compte ni les espaces ni les commentaires -- s'il y en a), ou de voir du côté des machines à état si c'est plus compliqué.

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ShootDX
    ça s'écrit assez facilement avec des fgets
    Pas forcément... Est-ce que [STEP1] (ou [STEP2]) est un token, un symbole terminale? Si oui, pas de problème. Si [ et STEP1 peuvent être séparés par des espaces, alors le mieux est de faire sa propre fonction fgets() (qui ne prend en compte ni les espaces ni les commentaires -- s'il y en a), ou de voir du côté des machines à état si c'est plus compliqué.
    fgets() prend la ligne. Quel est le problème?
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: parseur de fichier
    Citation Envoyé par ronan99999
    je cherche des fonctions permettant d'explorer de façon intelligente des fichiers. Sans avoir à mettre dans un tampon la totalité du fichier

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [STEP1]
    toto tata titi tonton
    [STEP2]
    ...txt...
    Je voudrais récupérer la chaine toto tata titi tonton comprise entre [STEP*]
    Si c'est un fichier texte, il suffit de le lire ligne par ligne (fgets()) et de mémoriser les informations intéréssantes en s'appuyant sur la séquence de balises. L'aspect séquenciel nécessitera peut être la mise en oeuvre d'une machine à états...
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Points : 125
    Points
    125
    Par défaut
    fgets() prend la ligne. Quel est le problème?
    Ce que je voulais dire, c'est qu'il pourrait faire une autre fonction qui se calque sur fgets() afin de supprimer dans la chaîne lue les commentaires et les blancs.

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ShootDX
    fgets() prend la ligne. Quel est le problème?
    Ce que je voulais dire, c'est qu'il pourrait faire une autre fonction qui se calque sur fgets() afin de supprimer dans la chaîne lue les commentaires et les blancs.
    fgets() est la fonction de lecture de ligne. Après, on applique à la ligne lue le traitement que l'on veux...
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut
    Merci à tous.
    J'ai trouvé mon bonheur dans le fgets malgrés le faite qu'il prenne quelque caractéres en plus que la ligne: le saut et le premier de la suivante.
    Mais pour ce que je dois faire c'est impeccable.
    Merci encore.
    Si tu ne te plantes pas, comment veux tu pousser?

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ronan99999
    J'ai trouvé mon bonheur dans le fgets malgré le fait qu'il prenne quelque caractéres en plus que la ligne: le saut et le premier de la suivante.
    Non. fgets() prend la ligne complète, c'est à dire tous les caractères y compris le '\n'. Il ne prend rien de la ligne suivante.

    Penser au tag [Résolu]
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Parseur de fichier ASCII
    Par v_floyd_6 dans le forum MFC
    Réponses: 4
    Dernier message: 24/03/2010, 16h16
  2. [Dvp.NET|A intégrer] [C#]Parseur de fichier .reg
    Par smyley dans le forum Contribuez
    Réponses: 8
    Dernier message: 11/01/2009, 20h24
  3. Parseur de fichier .reg
    Par smyley dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 11/01/2009, 04h16
  4. Parseur de fichier
    Par aaron dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 21/11/2008, 09h43
  5. Parseur de fichier de configuration
    Par snyff dans le forum Windows
    Réponses: 4
    Dernier message: 15/06/2006, 14h54

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