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 :

Variable structurée et affichage


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 36
    Points : 31
    Points
    31
    Par défaut Variable structurée et affichage
    Bonjour tout le monde.

    Je suis en train de bosser sur un petit programme qui gère des utilisateurs. J'ai un soucis au niveau de l'âge sur ma variable structurée.

    Voici ma structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct recensement recensement;
    struct recensement
    	{
    	int age;
    	char nom[30], prenom[30];
    	};
    J'ai ensuite déclaré une variable structurée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    recensement personne[tabmaxsize]
    Pour ajouter un utlisateur je passe par une fonction ajouterPersonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    printf("Veuillez entrer son nom :");
    	scanf ("%s", p_personne.nom); //ecriture dans la variable structurée
    	printf("Veuillez entrer son prenom :");
    	scanf ("%s", p_personne.prenom);
    	printf("Veuillez entrer son age :");
    	scanf ("%i", p_personne.age);
            return p_personne;
    Mon problème est dans l'affichage de ces valeurs. Le nom et prénom s'affiche bien comme je veux mais pas l'age. il m'affiche une adresse identique pour tout l'affichage de l'age.
    Voici le code de l'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i =0; i < index; i++)
    		{
    		printf("%s   |   %s   |   %i \n", personne[i].nom, personne[i].prenom, personne[i].age);
    		}
    Je pense que l'erreur vient du fait que les caractères sont des tableaux de char alors que l'age non mais je n'arrive pas à trouver comment obtenir les bonnes valeurs à l'écran.

    Si vous aviez une piste à m'indiquer ça serait vraiment sympa.

    Je vous remercie par avance de vos réponses.

  2. #2
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 616
    Points
    616
    Par défaut
    Est-ce que e peux voir la portion de code où tu fais appel à ta fonction AjoutPersonne?
    Ou tout le code?

  3. #3
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 616
    Points
    616
    Par défaut
    Sinon il manque un & devant la variable qui va stocker ton int .
    Car là tu stocke sans cesse l'adresse de ta variable et donc c'est normal qu'ensuite tu affiche toujours la même adresse.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup c'était effectivement ça. J'ai bloqué dessus une après midi entière pour une bêtise.

    Merci, merci bonne journée

  5. #5
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 616
    Points
    616
    Par défaut
    N'oublie pas de signaler que ton problème est résolu.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par juve1897 Voir le message
    Car là tu stocke sans cesse l'adresse de ta variable et donc c'est normal qu'ensuite tu affiche toujours la même adresse.
    Il ne stocke même pas l'adresse, il écrit dans une case mémoire dont le numéro correspond à la valeur contenue au moment t dans sa variable. Comme le prototype de scanf contient « ... » et qu'un int a le même format qu'un pointeur, il y a tout ce qu'il faut pour faire un cast implicite.

    Il est étonnant que cela ne se soit pas fini par une segfaut ...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2009, 19h40
  2. Tri à bulle dans une variable structurée
    Par viewtifulced dans le forum C
    Réponses: 5
    Dernier message: 19/08/2008, 11h33
  3. [VB.NET] Visibilité de variables, structures
    Par nicoarrf dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 31/07/2008, 15h43
  4. variable structurée (VB6)
    Par dimdimDC dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/10/2007, 20h53
  5. Réponses: 1
    Dernier message: 22/06/2007, 15h39

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