Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1118 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Allocation dynamique d'une grille de structure.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Allocation dynamique d'une grille de structure.

n°1856468
boblenain2​00
Posté le 01-03-2009 à 14:05:08  profilanswer
 

:hello:

 

Voila, je veux créer une grille (tableau de tableau) d'une structure. Le code est assez clair je crois, mes je n'arrive pas à accéder aux élèments de la structure:

Code :
  1. typedef struct {
  2. int x;
  3. int y;
  4. int etat; // 0 = mort ; 1 = vivant
  5. }t_Cellule;
 


Code :
  1. int** InitialiserGrille(void)
  2. {
  3. int i,j;
  4. int **grille;
  5. if ((grille = malloc(COLONNE*sizeof(t_Cellule*))) == NULL)
  6. {
  7.  fprintf(stderr,"Erreur lors de l'allocation\n" );
  8.  exit(EXIT_FAILURE);
  9. }
  10. for (i =0;i<COLONNE;i++){
  11.  grille[i] =malloc(LIGNE*sizeof(t_Cellule));
  12. }
  13. for (i=0;i < LIGNE;i++){
  14.  for (j=0;j <COLONNE;j++){
  15.   //*(grille[i][j]).etat = 0;
  16.   /*grille->cellule[i][j].y = j;
  17.   grille->cellule[i][j].etat = 0;*/
  18.  }
  19. }
  20. return grille;
  21. }
 

(La partie qui pose probleme est la partie commentée)

 

Si je fais "grille[i][j].etat = 0;", la compilation retourne :
main.c: In function 'InitialiserGrille':
main.c:36: error: request for member 'etat' in something not a structure or union

 

Si je fais " grille[i][j]->etat = 0;"
main.c: In function 'InitialiserGrille':
main.c:36: error: invalid type argument of '->'


Message édité par boblenain200 le 01-03-2009 à 14:07:23
mood
Publicité
Posté le 01-03-2009 à 14:05:08  profilanswer
 

n°1856477
superbob56
Posté le 01-03-2009 à 14:58:29  profilanswer
 

Code :
  1. int **grille;


ça serait pas plutôt

Code :
  1. t_Cellule ** grille

?


---------------
By bob.
n°1856478
boblenain2​00
Posté le 01-03-2009 à 15:04:08  profilanswer
 

[:smiley du mec qui se tient la tete]
 
... oui .. c'est çà :o
 
Merci :jap:

n°1856582
Taz
bisounours-codeur
Posté le 01-03-2009 à 21:51:48  profilanswer
 

Ce n'est pas une bonne méthode, parce que tes grille[i] sont éparpilées (problème de cohérence de cache).
 
Alloue un block grille = COLONNE*sizeof grille[0]
Alloue un block p = LIGNE*COLONNE*sizeof grille[0][0], et ensuite tu remplis grille[x] = p + c * COLONNE

n°1856627
Joel F
Real men use unique_ptr
Posté le 02-03-2009 à 08:18:48  profilanswer
 

j'ai deja vu ça quelque part :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Allocation dynamique d'une grille de structure.

 

Sujets relatifs
[RESOLU] - [C#] - NullReferenceExceptionProjet : C ou Java ? Comment modéliser avec GTK ?
problème #IND et #INF ,C++C/C++ Dossier a espace
Problèmes en C et en GTKPersistance en C#
Tableau dynamique dans une fonctionC++ avec GDI+ convertir Tiff compressé LZW en Tiff compressé CCITT4
Question débile - fonctions membres C++[C++] Eclipse + CDT pour dev en C++ vous en pensez quoi?
Plus de sujets relatifs à : [C] Allocation dynamique d'une grille de structure.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR