Cast char to enum language C
Morendo
-
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche depuis un moment sur le net un moyen de caster une chaîne de caractères pour
attribuer une valeur à un enum
exemple :
J'ai vu qu'il existait une méthode utilisant map en C++ , néanmoins je voudrai réaliser ceci en C, y a t'il une méthode simple qui m'aurait échapper ?
Je vous remercie de vos réponses !!
Je cherche depuis un moment sur le net un moyen de caster une chaîne de caractères pour
attribuer une valeur à un enum
exemple :
#include <stdlib.h> #include <stdio.h> typedef enum infer {un=1,deux= 2,trois=3,quatre=4,cinq=5,six=6,sept=7,huit=8,neuf=9,dix=10} infervingt; ... int main(void) { infervingt test="un"; printf("%d",test); return EXIT_SUCCESS }
J'ai vu qu'il existait une méthode utilisant map en C++ , néanmoins je voudrai réaliser ceci en C, y a t'il une méthode simple qui m'aurait échapper ?
Je vous remercie de vos réponses !!
A voir également:
- Cast char to enum language C
- Vlc cast to tv - Guide
- Qwerty to azerty - Guide
- Installer chrome cast - Guide
- Video to video - Télécharger - Conversion & Codecs
- Majuscule to minuscule - Guide
1 réponse
Voila ce qui arrive quand on parle trop vite..
http://cboard.cprogramming.com/c-programming/60392-i-fail-conve rt-char-*-enum.html
le code contient quelques erreur notamment dans currency_et GetEnumFromString
error : reach end of a non void function
en esperant que cela aidera certains
Bonne journée
#include <stdio.h> #include <string.h> typedef enum { C_EURO, C_STERLING, C_DOLLARS } currency_et; currency_et GetEnumFromString ( const char *s ) { static struct { const char *s; currency_et e; } map[] = { { "C_EURO", C_EURO }, { "C_STERLING", C_STERLING }, { "C_DOLLARS", C_DOLLARS }, }; int i; for ( i = 0 ; i < sizeof(map)/sizeof(map[0]); i++ ) { if ( strcmp(s,map[i].s) == 0 ) { return map[i].e; } } } int main ( ) { currency_et var; var = GetEnumFromString( "C_STERLING" ); printf( "Result=%d\n", (int)var ); return 0; }
http://cboard.cprogramming.com/c-programming/60392-i-fail-conve rt-char-*-enum.html
le code contient quelques erreur notamment dans currency_et GetEnumFromString
error : reach end of a non void function
en esperant que cela aidera certains
Bonne journée
Pour l'erreur, c'est parce que le return n'est pas appelé dans tous les cas dans la fonction GetEnumFromString.
Non, je ne pense pas. Si sa fonction sort de la boucle for sans avoir fait de return, c'est que la conversion n'a pas eu lieu. Enfin, de ce que je comprends.
@Morendo,
C'est pas terrible de mettre EXIT_FAILURE. Le mieux serait de mettre return -1;. Cela te permettrait de tester la valeur de retour et qu'elle soit différente des autres en cas d'erreur.