Evaluer le texte d'un fichier comme du code C. - C - Programmation
Marsh Posté le 12-11-2004 à 22:51:27
le C ça s'évalue pas. fais le à la main ou avec un truc comme flex
Marsh Posté le 12-11-2004 à 23:00:21
Chronoklazm a écrit : |
Si ton fichier ne contient que ce texte la, un bete #include "test.txt" ne suffit pas ?
Marsh Posté le 12-11-2004 à 23:01:34
Tu utilises une bibliothèque qui sait lire le format XBM :
http://www.dcs.ed.ac.uk/home/mxr/gfx/2d/XBM.txt
Marsh Posté le 12-11-2004 à 23:01:37
Taz a écrit : le C ça s'évalue pas. fais le à la main ou avec un truc comme flex |
Meuh si. Il y a Tcc ( http://fabrice.bellard.free.fr/tcc/ ) et smac, qui fait partie de xcoral.
Mais son format, ça ressemble furieusement à XPM (ou un truc dans le genre). Donc ça vaut le coup de regarder du coté des libs XPM...
edit: grillé par HelloWorld.
Marsh Posté le 12-11-2004 à 23:36:35
C'est quoi l'arnaque avec Tcc? Il doit bien y avoir un inconvenient quelque part !
Marsh Posté le 12-11-2004 à 23:38:03
Merci messieurs pour vos reponses
HelloWorld ===> J'ai pas le droit de faire ca C'est moi qui est censé le faire le bitmap, bmtoa et le atobm. (en gros ce qui lit et ecrit ce format)
Lam's ========> Pas de flex non plus.
Diody ========> Excellente idée ! Peut on faire un #include conditionnel dependant d'une variable ?
Genre un truc comme :
Code :
|
Bon va faloir faire tout à la main
Marsh Posté le 12-11-2004 à 23:39:26
Ace17 a écrit : C'est quoi l'arnaque avec Tcc? Il doit bien y avoir un inconvenient quelque part ! |
Bah ça optimise pas, donc bye bye les perfs.
Mais il y avait une version encore plus rikiki qui avait gagnée à l'ioccc (enfin, l'ioccc, c'est comme l'école des fans: tout le monde gagne).
Marsh Posté le 12-11-2004 à 23:45:01
#include est une instruction du préprocesseur. C'est évalué à la compilation, pas à l'exécution. Donc non, on ne peut pas faire de #include conditionnel dépendant d'une variable. Ca n'a pas de sens.
Marsh Posté le 12-11-2004 à 23:47:20
Chronoklazm a écrit : |
Oui. Donc lire les deux premières lignes, allouer de la mémoire, puis te taper les valeurs une par une (avec une mini-machine à état par exemple).
Ca doit être le but de l'exercice...
Marsh Posté le 13-11-2004 à 00:01:05
Mais le fait que les fichier xbm sont du code c et pas juste une suite de symboles (ou de carac. hexadecimaux comme les vrai fichier bitmap, jpeg ...) ca a une raison non ? Et cette raison ne peut (logiquement) etre autre chose que la maniere d'en faciliter la lecture ...
Enfin jveu dire pourquoi du code c ? C'est ptet pas pour rien.
Marsh Posté le 13-11-2004 à 00:04:08
Oui, à la base, c'est fait pour que tu puisses inclure tes images à la compilation (typiquement: inclure les icones pour XWindows, tout comme les applications Windows incluent les .ico au format BMP) pour que l'image soit à l'intérieur du fichier exécutable.
Mais dans ton cas, il faut que tu puisses charger n'importe quel type d'image, il faut donc réécrire un parser XBM.
Marsh Posté le 13-11-2004 à 10:30:28
Ace17 a écrit : C'est quoi l'arnaque avec Tcc? Il doit bien y avoir un inconvenient quelque part ! |
C'est limité à Linux/ELF/x86
EDIT: en fait, non (je me basais sur une vieille version). Je viens de vérifier, il y a des ports Windows, FreeBSD et il peut sortir de l'ARM et du TMS, on va bientôt pouvoir faire de l'embarqué avec
EDIT2: wc -l tcc.c --> 10481
Marsh Posté le 12-11-2004 à 21:43:10
Je connais pas exactement le terme a employer pour ce genre de "lecture"
d'un fichier, mais en gros je voudrais "lire" le texte d'un fichier
comme du code c (sachant pertinament que ca doit etre du code c), ceci
pour eviter de "chercher" dans le texte.
J'ai le fichier test.txt, contenant la representation d'une image :
#define test_width 16
#define test_height 16
static unsigned char test_bits[] = {
0x18, 0xc0, 0xc0, 0xe0, 0x30, 0x78, 0x00, 0x0c, 0x30, 0x3b, 0x30, 0x78,
0x80, 0xc1, 0x36, 0x18, 0x0c, 0xf6, 0xbc, 0x61, 0x78, 0x60, 0x30, 0x18,
0x30, 0xe0, 0x30, 0xc0, 0xe0, 0x01, 0x06, 0x00};
J'ai donc besoin de recuperer les dimensions (16 et 16) de cette image,
mais aussi le tableau.
Plutot que d'extraire les chaines puis les convertir (enfin de ce prendre
la tête quoi) existe til un moyen plus intelligent, genre evaluer directement
les 3 lignes ?