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 avec une structure.


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Points : 124
    Points
    124
    Par défaut probleme avec une structure.
    Bonjour tout le monde.
    Je commence le C et j'ai le problème suivant que je ne comprend pa :

    J'ai une structure uneCase dans mon fichier uneCase.c, ainsi qu'une méthode qui permet de construire une structure et qui me renvoit un pointeur dessus :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct   {
    	double largeurCase;
    	double hauteurCase;
    	int occupee; //1 = il y a deja un cochon ou le gpl sur la case. 0 sinon.
    	int condamnee;//1 = la case est un trou beant. 0 sinon;
    	int indiceX, //permet de savoir ou se situe la case dans la grille.
    		indiceY;
    	double x, y; //abscisse et ordonnee de la case pour la representation graphique
    }uneCase;
     
     
    uneCase *initUneCase(double l,double h,int o,int c,int x,int y, double posx, double posy){
    	uneCase *ca= malloc(sizeof(uneCase));
    	ca->largeurCase=l;
    	ca->hauteurCase=h;
    	ca->occupee=o;
    	ca->condamnee=c;
    	ca->indiceX=x;
    	ca->indiceY=y;
    	ca->x=posx;
    	ca->y=posy;
    	return ca;
    }
    je fais un fichier test tout bete ou je créé une structure uneCase :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdlib.h>
    #include <stdio.h>
    #include "uneCase.h"
     
    int main(void){
     
    	uneCase *maCase;
    	maCase = NULL;
    	maCase = initUneCase(20,20,0,0,0,0,0,0);
    	printf("occcupee : %d\n", maCase->occupee);
    	return 0;
    }
    malheureusement j'ai à la compilation de mon fichier test.c l'erreure suivante :

    'struct <anonymous>' has no member named 'occupee' !

    alors que si je fais le test dans mon fichier uneCase.c cela marche :

    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
    32
    33
    34
    35
    36
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct   {
    	double largeurCase;
    	double hauteurCase;
    	int occupee; //1 = il y a deja un cochon ou le gpl sur la case. 0 sinon.
    	int condamnee;//1 = la case est un trou beant. 0 sinon;
    	int indiceX, //permet de savoir ou se situe la case dans la grille.
    		indiceY;
    	double x, y; //abscisse et ordonnee de la case pour la representation graphique
    }uneCase;
     
     
    uneCase *initUneCase(double l,double h,int o,int c,int x,int y, double posx, double posy){
    	uneCase *ca= malloc(sizeof(uneCase));
    	ca->largeurCase=l;
    	ca->hauteurCase=h;
    	ca->occupee=o;
    	ca->condamnee=c;
    	ca->indiceX=x;
    	ca->indiceY=y;
    	ca->x=posx;
    	ca->y=posy;
    	return ca;
    }
     
    int main(void){
    	uneCase* maCase=NULL;
    	maCase= initUneCase(20,20,0,0,0,0,0,0);
    	printf("occcupé : %d\n", maCase->occupee);
    	maCase->occupee=1;
    	printf("occcupé : %i\n",maCase->occupee); 
    	return 0;
    }
    Je ne comprend pas l'érreure et comme je dois faire une programmation modulaire, je suis coincé...
    merci de m'aider !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    La structure doit être déclarée dans un fichier d'en-tête (genre uneCase.h), et la fonction doit être déclarée dans le même fichier d'en-tête et définie dans uneCase.c.

    uneCase.h doit être inclus par uneCase.c et par le fichier contenant ton main().

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Points : 124
    Points
    124
    Par défaut
    merci beaucoup pour ton aide, sa marche tres bien maintenant !

    (c'est fou le temps qu'on peut perdre pour une petite connerie ...)

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par apesle
    merci beaucoup pour ton aide, sa marche tres bien maintenant !

    (c'est fou le temps qu'on peut perdre pour une petite connerie ...)
    A lire d'urgence :

    http://emmanuel-delahaye.developpez....ganiser_source
    http://emmanuel-delahaye.developpez.....htm#organiser

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Points : 124
    Points
    124
    Par défaut
    merci pour tes liens tres interessants !

    J'ai encore un petit probleme bizarre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //calcul de la taille d'une case :
    	double largeurCase= (g->largeur)/(g->nombreDeCasesSurUnCote);
    	double hauteurCase= (g->hauteur)/(g->nombreDeCasesSurUnCote);
    	printf("calcul : %d\n",(g->largeur)/(g->nombreDeCasesSurUnCote));
    	printf("largeurCase : %d\n",largeurCase);
    l'instruction :
    printf("calcul : %d\n",(g->largeur)/(g->nombreDeCasesSurUnCote));
    me renvoit 160 : normale g->largeur = 800 et g->nombreDeCasesSurUnCote = 5
    l'instruction :
    printf("largeurCase : %d\n",largeurCase);
    me renvoit 0 .
    pourquoi ?

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    On n'affiche pas un double avec %d, mais avec %f.

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

Discussions similaires

  1. Probleme avec une structure sequentielle empilée
    Par kobalt02 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 17/06/2009, 13h27
  2. Probleme avec une structure
    Par bouba69 dans le forum Débuter
    Réponses: 12
    Dernier message: 03/02/2008, 21h46
  3. Probleme avec une structure
    Par coco.cohen dans le forum C
    Réponses: 3
    Dernier message: 26/11/2007, 20h41
  4. Probleme avec une structure
    Par Fred2209 dans le forum C++Builder
    Réponses: 15
    Dernier message: 22/11/2006, 22h47
  5. probleme avec une "structure en arbre"
    Par kamouminator dans le forum C
    Réponses: 1
    Dernier message: 07/11/2006, 22h21

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