Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Parser 'proprement' en C



  1. #1
    ze6killer

    Parser 'proprement' en C


    ------

    Bonjour,

    Je réalise un petit programme en C qui interprète des fichiers script enregistrés au format txt.

    La question que je me pose est:
    - devrai-je ouvrir le fichier texte, lire au fur et à mesure les données qui m'intéressent dedans, puis le refermer quand j'ai fini (mais si mon prog plante, alors le fichier texte ne sera jamais refermé !?)
    ou
    - ouvrir le fichier texte, le copier dans un buffer, le fermer puis travailler à partir de mon buffer.

    La deuxième méthode me semble plus prudente, mais je n'ai pas trouvé de fonction pour tout copier d'un coup (fgets() par exemple s'arrête dès qu'elle rencontre un retour chariot) et de copier mon fichier petit bout par petit bout ne me semble pas très élégant.

    Bref, j'aimerai avoir vos avis quand á la méthode la plus 'propre' à adopter.

    Merci d'avance,
    Ze

    -----

  2. Publicité
  3. #2
    Towl

    Re : Parser 'proprement' en C

    Tout dépend de ce que tu souhaites faire et de tes contraintes.
    Si c'est un gros fichier, que tu n'as pas besoin des données tout le temps, alors une lecture par petit bout peut convenir. Le mieux étant de faire un fopen() juste avant, et un fclose() juste apres avoir lu. Tu ouvriras ton fichier pleins de fois mais tu auras une meilleure assurance d'avoir fermé ton fichier.
    S'il s'agit d'un petit fichier ou que tu as beosin de souvent le parcourir, mieux vaut le lire d'une seule traite. Et pour tout lire d'un coup, je te conseille de regarder du coté de fread().

    Mais autrement, si c'est faire une interprétation de script, tu peux toujours jeter un coup d'oeil du coté de flex/yacc qui sont des langages d'analyse syntaxiques et grammaticaux. Suivant la complexité de tes scripts, cela sera peut etre plus simple de passer par eux.
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  4. #3
    invite765732342432
    Invité

    Re : Parser 'proprement' en C

    Je dirais que pour lire des fichiers de scripts, il est impératif de les charger en intégralité en mémoire, sinon tu risques d'avoir des comportements très bizarre en cas d'édition en cours d'exécution !

    C'est d'ailleurs comme ça que fonctionne le php par exemple (et heureusement !)

  5. #4
    ze6killer

    Re : Parser 'proprement' en C

    Alors, dans le désordre:
    il ne s'agit pas de gros fichiers (moins de 10.000 lignes, 1000 en moyenne)
    il n'y a pas de risque qu'ils soient modifiés en cours de route

    Je ne connaissais pas flex/bison mais après un rapide coup d'oeil sur le net ca me semble correspondre parfaitement à ce que je souhaite faire.
    Même si j'ai tendance à préférer tout coder moi-même (au moins on sait comment ca tourne á l'intérieur.. ou du moins comment c'est sensé tourner) je vais sûrement creuser de ce côté là.

    Merci à vous deux pour vos réponses claires autant que rapides. : ]

    Ze

  6. A voir en vidéo sur Futura
  7. #5
    ze6killer

    Re : Parser 'proprement' en C

    Citation Envoyé par Towl Voir le message
    Mais autrement, si c'est faire une interprétation de script, tu peux toujours jeter un coup d'oeil du coté de flex/yacc qui sont des langages d'analyse syntaxiques et grammaticaux. Suivant la complexité de tes scripts, cela sera peut etre plus simple de passer par eux.
    Salut,

    Après une bonne après-midi de lecture sur flex/yacc il semblerait que cela puisse convenir mais (car il y a toujours un "mais"):
    pas moyen de trouver comment les utiliser avec visual c++.
    (eh oui, je bosse sous visual)
    Saurais-tu me dire si cela se compile facilement sous Visual (si oui, comment? :'D)
    En effet, j'ai vu pas mal de forums qui en parlaient, mais aucun ne proposait de réponse claire et simple.

    Si c'est pour y passer 3 jours, je crois que je vais coder ca à la main.


    Bonne journée,
    Ze

  8. #6
    Towl

    Re : Parser 'proprement' en C

    Ah.. la je n'en ai aucune idée. Je n'ai jamais utilisé VC++, et les peu de Flex que j'ai fait, c'était sous Unix
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  9. Publicité

Discussions similaires

  1. [Biochimie] Comment couper "proprement" un peptide
    Par logan138 dans le forum Biologie
    Réponses: 4
    Dernier message: 03/07/2008, 15h17
  2. démontrer proprement que sin t /t est de classe C1
    Par Lyrian dans le forum Mathématiques du supérieur
    Réponses: 13
    Dernier message: 27/03/2006, 23h30
  3. Désinstaller proprement
    Par kinette dans le forum Logiciel - Software - Open Source
    Réponses: 20
    Dernier message: 19/06/2003, 13h57
Découvrez nos comparatifs produits sur l'informatique et les technologies.