Operations sur type enum en C

Fermé
Bonjour,
Je cherche a effetuer des operations sur un type enum que j'ai defini ainsi :

typedef enum phrase {
"Il fait beau",
"Il pleut",
"Il neige"
};

Voila, une fois le type definie, je voudrais savoir comment comparer 2 valeur du type enum, et comment en initialiser une a la premiere valeur de phrase, c'est a dire "Il fait beau" .

1/
Ainsi j'ai une fonction qui prend obligatoirement en parametre un int, et qui renvoi obligatoirement un char* correspondant a la valeur du type enum en fonction de i :

const char *fonction1(int i);

ainsi si i = 1, const char *fonction(int i) renvoi "Il pleut". Comment faire ?

2/ J'ai un 2e question : meme fonction mais qui renvoi une valeur du type enum :
enum phrase fonction2(int i);

de méme si i=2 , enum phrase fonction2(int i) renvoi "Il neige". Comment faire ?

Merci si vous pouvez m'adier parsque je suis un peu perdu et je ne trouve nulle part une explication !
Cordialement,
Configuration: Linux
Firefox 3.0.3

7 réponses

  1. Contributeur
    8-/ ça fonctionne comme ça ton enum ???
    Pour moi, un enum ne s'utilise pas du tout comme ça !
    Si ça compile, je retourne voir mes cour, mais sinon, je te conseil d'aller revoir tes cours.
    enum phrase{il_fait_beau=0,var2=1,var3=2};
    1. si j'initialise le type enum comme toi, cela me met 2 erreur par ligne a la compilation :
      ex :
      140: erreur: stray «\303» in program
      140: erreur: stray «\251» in program
      donc je ne sais pas pourquoi ...
      1. ok c'est bon désolé j'ai resolu ce probleme ça compile corrctement avec le type enum bien initialisé !
        Mais pour aprés je suis toujours coincé ! Merci si vous pouvez m'aider !
        1. Contributeur
          pour le reste, je ne sais pas trop, mais je ne pense pas que le type enum soit le mieux adapté à ce que tu veux faire.
          Si je comprends bien, tu veux associé un entier à une chaine de caractère.
          tu peux faire une tableau :
          const char** phrase={"il pleut","il fait beau","il neige"};
          fonction1 devient : fonction1(int i){return phrase[i];}.
          1. C'était egalement l'idée que j'avai eu, de passer par un tableau de pointeur char a 2 dimensions, mais l'énoncé est stricte, il faut utiliser un type enum... donc je ne vois pas du tout et je bloque ! merci quans meme ...
            1. Contributeur
              avec un enum, moi je passerai par un switch:
              switch (i)
              case il_fait_beau: return "il fait beau";
              case il_neige : return "il neige";
              ...
              Mais je trouve que ça tiens du bourrin, du lourd.