IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

afficher "la partie texte" d'un enum est ce possib


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut afficher "la partie texte" d'un enum est ce possib
    j'ai un enum, et j'aimerai faire un printf dans ce genre, il y a t'il une solution pour ca?
    :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    enum famille{
    toto,
    titi
    };
     
    void main()
    {
         famille mafamille;
    mafamille = titi;
         printf(" je suis %s", mafamille);     
    }
    resultat :

    je suis titi

    :

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    Non.

    Ce que tu peux faire, par exemple, c'est créer une fonction d'affichage pour le type famille (d'ailleurs je serais pas étonné qu'il manque un typedef quelque part dans ton code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void famille_printf(famille f)
    {
      switch(f) 
      {
        case toto : 
          printf("toto") ;
          break ;
        case titi :
          ...
      }
    }
    ou, mieux encore, si tu utilises une librairie qui le permet (comme la glib), définir un nouveau formatteur pour printf.

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Re: afficher "la partie texte" d'un enum est ce po
    Citation Envoyé par giova_fr
    j'ai un enum, et j'aimerai faire un printf dans ce genre, il y a t'il une solution pour ca?
    :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    enum famille{
    toto,
    titi
    };
     
    void main()
    {
         famille mafamille;
    mafamille = titi;
         printf(" je suis %s", mafamille);     
    }
    resultat :

    je suis titi

    :
    Les énumarations de constantes ne sont pas du texte du moins par défaut (je sais meme pas si c'est possible de leur faire retourner une chaine) n'en fournissent pas etant donné qu'elles sont à la base d'un type int donc par défaut commencent à la valeur 0 qui plus est, tu as oublié le typedef avant le mot enum (enfin suivant l'utilisation que tu en as faite) donc un ptit switch...case sont de bonne augure !

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Merci pour la precision (ouf il n'y a qu'une 10aine d'etats dans mon enum

    le typdef c'est dans le but que le type soit reconu dans toutes les pages de code du logiciel non?

    de mon coté c'est défini dans une classe, et c'est private, j'ai fais 2 assesseurs, un qui retourne le int, l'autre un String grace au switch

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    cllase, string... Tu es sûr que tu fais du C ? Pas du C++ ?

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par giova_fr
    le typdef c'est dans le but que le type soit reconu dans toutes les pages de code du logiciel non?
    non surement pas Faut ré-ouvrir ton livre sur le C !

    Si tu fait:
    C'est que l'énumération est un typedef sinon tu devrait faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum famille mafamille;

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    oui en effet, je vais encore m'y remettre

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par giova_fr
    de mon coté c'est défini dans une classe, et c'est private, j'ai fais 2 assesseurs, un qui retourne le int, l'autre un String grace au switch
    Surement pas en C Les classe et Private n'existe pas en C mais plutot en C++, t'est sure de ne pas confondre ou mélanger les 2 langages ?

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    oui bien sur que les classes sont du C++ disons que pour le simple "probleme" cité dans le premier post, j'ai simplifié la situation. Si j'ai parlé APRES de mon histoire de classe, c'est que je me suis demandé si il y avait un lien avec le type def....


    Oh lala qu'on s'y perd quand on debute

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Franchement, l'idée du switch()/case, je trouve ça moche (question de goût ?). Pourquoi pas quelque-chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>
     
    typedef enum {
            toto,
            titi
    } famille;
     
    int main(int argc, char *argv[]) {
            famille maFamille;
            char *nomsFamilles[]={"toto","titi"};
     
            maFamille = titi;
            printf("Je suis %s\n", nomsFamilles[maFamille]);
     
            return 0;
    }

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    ça marche ici, mais si les valeurs de l'enum n'étaient plus contigües, ça ne marcherait plus...

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Sutout que l'enum qu'il nous a donné n'est à ce que j'ai cru comprendre qu'un exemple, le sien comporte un plus grand nombre de constantes donc s'il faut stocker des dixaines de chaines pour en utilise que 2 ou 3 ca fait un beau d'espace

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    De plus, il me semble que le rôle de l'enum est justement de ne plus avoir à faire référence à la valeur numérique sous-jacente.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. les quotes et du texte?
    Par panthere noire dans le forum SQLite
    Réponses: 2
    Dernier message: 30/09/2010, 18h48
  2. Réponses: 6
    Dernier message: 01/05/2009, 16h35
  3. Export avec double quote pour variables texte
    Par brand003 dans le forum SAS Base
    Réponses: 13
    Dernier message: 15/04/2009, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo