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 :

Probleme structure dans une structure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut Probleme structure dans une structure
    Bonjour!

    Je suis en train de faire un petit programme qui comprend une structure dans une autre structure et j'ai un probleme pour accéder a la deuxieme structure.

    Voici le code :

    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
    #include "coureur.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    /*----------------------------------------------------------------------------------------------------*/
    void Ajouter_Temps(coureur* un_coureur)
    {
    	printf("Entrer le temps du jour du coureur : ");
    	scanf("%d",&(un_coureur->temps_etape));
    	conversion_Temps(un_coureur);
    }
     
    /*----------------------------------------------------------------------------------------------------*/
    void conversion_Temps(coureur* un_coureur)
    {
    	printf("test 1-1\n");	
    	//convertion temps de l'etape du jour
    	(un_coureur->temps_jour->h)=(un_coureur->temps_etape)/3600; //c'est là que ça bugue mais je ne sais pas si cette écriture est correcte???
    	printf("test 1-2\n");
    	(un_coureur->temps_jour->min)=((un_coureur->temps_etape)%3600)/60;
    	(un_coureur->temps_jour->sec)=((un_coureur->temps_etape)%3600)%60;
     
    	printf("test 2\n");
    	//convertion temps cumulé
    	(un_coureur->temps_cumule->h)=(un_coureur->temps_cumule->h)+(un_coureur->temps_jour->h);
    	(un_coureur->temps_cumule->min)=(un_coureur->temps_cumule->min)+(un_coureur->temps_jour->min);
    	(un_coureur->temps_cumule->sec)=(un_coureur->temps_cumule->sec)+(un_coureur->temps_jour->sec);
    	printf("test 3\n");
    }
    merci d'avance pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Oups désolé j'ai oublié le ".h" où il y a les structures.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef struct
    {	int h;
    	int min;
    	int sec;
    }temps;
     
    typedef struct 
    {	char nom[15];
    	char prenom[15];
    	int dossard;
    	int temps_etape;
    	temps* temps_cumule;
    	temps* temps_jour;
    }coureur;

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    un petit programme qui comprend une structure dans une autre structure
    Ce n'est pas le cas :
    Dans la structure coureur, il y a des pointeurs sur des structures temps, pas des structures temps. Comme, sans doute, ces pointeurs n'ont pas été initialisés -> Plantage.

    Peut être voulais-tu des structures temps dans coureur. Si c'est le cas, tu dois avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct 
    {	char nom[15];
    	char prenom[15];
    	int dossard;
    	int temps_etape;
    	temps temps_cumule;
    	temps temps_jour;
    }coureur;

    Alors, l'accès aux champs d'une de ces deux structures temps se fait par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un_coureur->temps_jour.h

    A noter qu'il manque le prototype de la fonction conversion_Temps qui est utilisée par Ajouter_Temps . Ou alors, il faut définir conversion_Temps avant Ajouter_Temps.

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Parfait ça marche!!! Merci beaucoup ça fesais un moment que j'était en train de galerer dessus!!

    Par contre j'ai pas bien compris quand doit-on utiliser un "." ou "->" ?
    Quand on a des pointeurs sur des structures on utilise "->" et quand on veut accéder a un champ d'une structure on utilise "."????
    (hum, je ne sais pas si je m'exprime bien)

    PS : j'ai fait le prototypage dans coureur.h

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par ba1boun2 Voir le message
    Par contre j'ai pas bien compris quand doit-on utiliser un "." ou "->" ?
    Quand on a des pointeurs sur des structures on utilise "->" et quand on veut accéder a un champ d'une structure on utilise "."????
    Oui :
    si p est un pointeur sur structure, on accède aux champs avec ->
    si s est une structure, on accède aux champs avec .

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    OK merci pour cette précision!

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

Discussions similaires

  1. probleme d'une structure dans une fonction
    Par saadaoui_1 dans le forum C++
    Réponses: 3
    Dernier message: 24/04/2014, 14h50
  2. erreur de compilation : probleme avec type de structure dans une classe
    Par medkarim dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/10/2008, 15h33
  3. Passage d'une structure dans une fonction
    Par god_enel dans le forum C
    Réponses: 8
    Dernier message: 22/01/2007, 15h35
  4. Passer une structure dans une fonction ...
    Par pilouface dans le forum C
    Réponses: 4
    Dernier message: 03/04/2006, 01h00
  5. [MFC] Passage d'une structure dans une method
    Par KPitN dans le forum MFC
    Réponses: 5
    Dernier message: 18/06/2004, 10h11

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