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 :

enum et tableau de structure


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 29
    Points
    29
    Par défaut enum et tableau de structure
    bonjour à tous

    voila je m'exerce aux tableaux de structures et aux enum

    voici déjà ce que j'ai fais :
    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
    17
    18
    19
     
    #define ERREUR_DEBUT 1000
    enum _config_error
    {
    	ERREUR_DIVISION_ZERO = ERREUR_DEBUT, //erreur 1000
    	ERREUR_NOMBRE_ARGUMENTS, //erreur 1001
    };
     
    // Description des erreurs
    struct _errordesc
    {
    	int code;
    	char *message;
    }
     
    errordesc[] = {
    { ERREUR_DIVISION_ZERO, "Division par zero" },
    { ERREUR_NOMBRE_ARGUMENTS, "Nombre d'arguments incorrect" },
    };
    lorsque je l'utilise dans mon programme je procède de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fprintf(stderr, "erreur %d : %s\n", errordesc[1].code, errordesc[1].message);
    getchar();
    exit(errordesc[1].code);
    jusque la pas de problème
    Mais puis-je afficher le message lié au numéro de l'erreur (1001 par ex) sans connaitre le numéro du tableau ?
    de cette manière :
    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
    17
    18
    19
     
    int func()
    {
       if(...)
       {
          return errordesc[1].code;
       }
       return 0;
    }
     
    int main()
    {
       int n;
       n = func();
       if(n != 0)
       {
          //afficher ici le message associé au numéro 1001 (sans connaitre la case du tableau)
       }
    }
    Merci à vous

  2. #2
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Bonjour,

    Tu ne peux pas directement, pas par contre rien de t'empêche de faire une petite fonction comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int get_error(int numero_error, int nbr_total_erreur)
    {
        int i = 0;
     
        for (i = 0; i < nbr_total_erreur; ++i)
        {
            if (errordesc[i].code == numero_error)
                return i;
        }
        return -1; /* par exemple */
    }
    cette fonction te renvoie la case du tableau correspondant a ton message d'erreur, il y a plusieurs façon de faire, ceci en est une

    edit: que dis-je il y a plus simple, tu as le nombre de debut, donc, il suffit de l'enleer a ton code de départ et tu as ta case

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  2. Tableau de structures en parametre d'une fonction
    Par -No Comment- dans le forum C
    Réponses: 19
    Dernier message: 29/03/2006, 15h00
  3. [VB6]Tri multi-colonnes sur tableau de structure
    Par ELGUEVEL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 08h02
  4. Réponses: 9
    Dernier message: 13/02/2006, 08h39
  5. Trier un tableau de structures
    Par Yux dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 17h28

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