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 :

Récupération variable contenu dans une structure


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Récupération variable contenu dans une structure
    Bonjour,
    je suis nouveau sur le forum et dans le monde de la programmation.
    Je commence dans mon travail et j'ai un petit souci de programmation.

    Je vous expose mon problème:
    le programme sur lequel je travaille est un peu particulier, il est composé de C classique avec du C inspiré du C++.
    Je voudrais récupérer la valeur d'une variable contenu dans une structure.

    ma variable à récupérer: P_iec_cfg.OffsetTcs (attention il y a un point entre P_iec_cfg et OffsetTcs)

    avec P_iec_cfg déclaré comme suit
    extern paramcfg P_iec_cfg; /* Structure de configuration*/

    et paramcfg est une structure contenant OffsetTcs

    la structure:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    typedef struct{
            unsigned long interframedelay; /* Délai inter-trame d'émission */
            unsigned int OffsetTcd;
        unsigned int OffsetTcs;
        unsigned int Equilibre;
        unsigned int Valid_Clock;
        unsigned int TimeStampType;
        unsigned int used_asdu;
        unsigned int nbre_packed;
        unsigned char FreqRefreshTM_IEC;
        unsigned int OffsetTss;
            unsigned int OffsetTsd;
            unsigned int OffsetTm;
            unsigned int OffsetCptr;
            unsigned char nbTcd;                    /* Nombre de TCD utilisées (=> nbTcd <= NB_TCD) */
        unsigned char nbTcs;                    /* Nombre de TCS utilisées (=> nbTcs <= NB_TCS) */
            unsigned char nbTss;                    /* Nombre de TSS utilisées (=> nbTss <= NB_TSS) */
            unsigned char nbTsd;                    /* Nombre de TSD utilisées (=> nbTsd <= NB_TSD) */
            unsigned char nbTm;                             /* Nombre de TM utilisées (=> nbTm <= NB_TM) */
            unsigned char nbCptr;                   /* Nombre de CPTR utilisées (=> nbCptr <= NB_CPTR) */
            GPTBYTE AsduSize;                               /* Taille max Trame (Octet) */
            GPTBYTE DataLinkSize;                   /* Taille Adr Liaison (Octet) */
            GPTBYTE CommonAddrSize;                 /* Taille Adr Broadcast (octet) */
            GPTBYTE ObjectAddrSize;                 /* Taille numero Objet (octet) */
            GPTDWORD DataLinkAddr;                  /* Adr liaison */
            GPTDWORD StationAddr;                   /* Adr Station */
    }paramcfg;
    En clair, je souhaite affecter ma variable P_iec_cfg.OffsetTcs dans une variable x que je pourrai afficher tranquillement. Je ne peux pas afficher directement *P_iec_cfg.OffsetTcs.
    Je me sert du compilateur Tasking
    J'espère que quelqu'un pourra m'aider.
    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Déjà, utilise les balises de code (le petit bouton # permet de les ajouter), ensuite, je vois pas où est le problème, t'as déjà la moitié de ta solution dans ta question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned x = P_iec_cfg.OffsetTcs;
    Mais t'as pas besoin de passer par une variable intermédiaire, tu peux l'afficher directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("OffsetTcs = %u", P_iec_cfg.OffsetTcs);

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    en gros, pour accéder à une variable dans une structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MaStruct MaVariable ;
    ...
    MaVariable.MonChamp = ...
    // ou
    int toto = MaVariable.MonChampDeTypeInt ;
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

Discussions similaires

  1. Réponses: 10
    Dernier message: 18/01/2008, 14h50
  2. Réponses: 4
    Dernier message: 17/01/2008, 23h50
  3. [POO] Retourner une variables contenu dans une autre méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 6
    Dernier message: 15/10/2007, 16h29
  4. Réponses: 2
    Dernier message: 02/10/2007, 11h42
  5. afficher la valeur d'une variable contenue dans une DB
    Par titoumimi dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2006, 17h00

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