ocelotsnipe | Bonsoir !
Je travaille actuellement sur un projet en C et j'ai une petite question pour pour voir afficher un type énuméré. Rapidement ce que j'utilise, pourquoi et ce que je veux en faire :
Code :
- typedef enum {VAL_COMMENTAIRE,VAL_SYMBOLE,VAL_DEUX_PTS,VAL_DIRECTIVE,VAL_DECIMAL,VAL_REGISTRE,VAL_VIRGULE,VAL_HEXA,VAL_OCTA,VAL_PAR_OUV,VAL_PAR_FERM,VAL_PLUS} TYPE ;
- typedef struct
- {
- char* lexeme ;
- TYPE Type ;
- int ligne ;
- } MOT ;
|
Donc voila, j'énumere mes TYPE, j'ai cru comprendre qu'en réalité, chaque type était associé à un entier, dont VAL_COMMENTAIRE = 0, VAL_SYMBOLE =1 ...
Mon problème c'est que lorsque je fait un printf de m.Type (m étant un MOT) un peu plus loin dans mon programme, il me renvoi l'entier, et moi je voudrai afficher la string ! COmment faire ?!
J'ai instinctivement tenté ça mais ca ne lui plait pas trop trop :
Code :
- char* traduit_types(int T) {
- char* types_string[] = { "VAL_COMMENTAIRE",
- "VAL_SYMBOLE",
- "VAL_DEUX_PTS",
- "VAL_DIRECTIVE",
- "VAL_DECIMAL",
- "VAL_REGISTRE",
- "VAL_VIRGULE",
- "VAL_HEXA",
- "VAL_OCTA",
- "VAL_PAR_OUV",
- "VAL_PAR_FERM",
- "VAL_PLUS"
- };
-
- if (T>-1 && T<12) {
- return types_string[T]; }
- return "erreur";
-
- }
- void affiche ( MOT* m){
- char* type_aff = NULL
- type_aff= traduit_types(m->Type);
- printf("\n Lexeme :%s Type :%d Numero de ligne :%d \n", m->lexeme,type_aff,m->ligne); }
|
SI vous avez une petite idée pour me débloquer ce serait super cool ! Merci à tous.
|