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 une variable structurée..


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Points : 24
    Points
    24
    Par défaut Afficher une variable structurée..
    Bonjour, je veux tester une fonction pour afficher une variable dans une structure.
    Le problème est que mon programme n'affiche pas la valeur rentrée par l'utilisateur mais plutôt une valeur exponentielle !!

    Veuillez saisir l'identifiant de l'individu :
    2
    Veuillez d�finir la priorit� de l'individu :
    3
    Identifiant de l'individu : 153419784
    Priorit� de l'individu : 153419800
    Je pense que cela est du à un problème de pointeurs et d'adresse. :/
    Je vous en serai reconnaissant si vous pouvez trouver le problème et me l'expliquer, merci d'avance !

    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
    28
    29
    30
    31
    #include "data.h"
    #include <stdlib.h>
     
    individu saisie_individu ()
    {
    individu c;
        c.ID = malloc(sizeof(int));
        printf("Veuillez saisir l'identifiant de l'individu :\n");
        scanf("%i", c.ID);
        c.priorite = malloc(sizeof(int));
        printf("Veuillez définir la priorité de l'individu :\n");
        scanf("%i", c.priorite);
    return c;
    }
     
    void affichage_individu(individu *  c)
    {
    int p = (*c).ID;
    int d = (*c).priorite;
     
        printf("Identifiant de l'individu : %i\n", p);
        printf("Priorité de l'individu : %i\n", d);
    }
     
    int main()
    {
        individu c;
        c= saisie_individu();
        affichage_individu(&c);
        return 0;
    }

  2. #2
    Membre actif Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Points : 223
    Points
    223
    Par défaut
    il y a une légère incohérence dans ton code:
    là tu considères les champs ID et priorite comme des int*(a priori):
    c.ID = malloc(sizeof(int));
    ...
    c.priorite = malloc(sizeof(int));
    puis la tu les considères comme des int et les affiches en tant que tel(si ce sont bien des pointeurs, je suppose que tu affiches alors leurs adresses):
    void affichage_individu(individu * c)
    {
    int p = (*c).ID;
    int d = (*c).priorite;

    printf("Identifiant de l'individu : %i\n", p);
    printf("Priorité de l'individu : %i\n", d);
    }

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Points : 24
    Points
    24
    Par défaut
    Oui, voilà. Ce sont les adresses qui s'affichent.
    Mais, j'aimerai que tu m'expliques pourquoi, parce que là, je suis perdu. :S

    J'ai également essayé de nombreuses variantes sans pointeurs ni adresse et à chaque fois, le programme m'affiche l'adresse de la variable.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 81
    Points : 128
    Points
    128
    Par défaut
    Tout dépend de comment est définie ta structure.

    Première possibilité :
    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
    typedef struct
    {
       int* ID;
       int* priorite;
    } individu;
    
    individu saisie_individu ()
    {
        individu c;
    
        c.ID = malloc(sizeof(int));
        printf("Veuillez saisir l'identifiant de l'individu :\n");
        scanf("%i", c.ID);
    
        c.priorite = malloc(sizeof(int));
        printf("Veuillez définir la priorité de l'individu :\n");
        scanf("%i", c.priorite);
    
        return c;
    }
    Deuxième possibilité :
    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
    typedef struct
    {
       int ID;
       int priorite;
    } individu;
    
    individu saisie_individu ()
    {
        individu c;
    
        /* Pas de malloc ! */
    
        printf("Veuillez saisir l'identifiant de l'individu :\n");
        scanf("%i", &c.ID);
    
        printf("Veuillez définir la priorité de l'individu :\n");
        scanf("%i", &c.priorite);
    
        return c;
    }

Discussions similaires

  1. afficher une variable
    Par Darkyl dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/05/2006, 15h32
  2. Afficher une variable en temps réel
    Par AraBorLeg dans le forum DirectX
    Réponses: 1
    Dernier message: 09/03/2006, 19h12
  3. Afficher une variable en temps réel
    Par AraBorLeg dans le forum Langage
    Réponses: 2
    Dernier message: 09/03/2006, 17h40
  4. afficher une variable (montant) en dollar
    Par camirefr dans le forum ASP
    Réponses: 1
    Dernier message: 19/01/2006, 22h45
  5. changer et afficher une variable en fonction d'un select
    Par psychoBob dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 22/11/2005, 08h15

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