zamiana dynamicznej tablicy na dynamiczną strukture

0

witam, mam problem ze zrobieniem dynamicznej struktury, głównie z alokacja pamięci

kod struktury:

struct pole {
    int wart;
    int odk;  
} **mapa;  

teraz mam problem jak zrobić, żeby żeby utworzyć dynamiczną strukturę? tzn póki co udało mi się zrobić to z samą tablicą 2D:

 #include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
int i,j; //pomocnicze
int w,k; //wiersze,kolumny

//wczytanie rozmiarów
 printf("Liczba wierszy: "); 
 scanf("%d",&w); 
 printf("Liczba kolumn: "); 
 scanf("%d",&k); 


 int**tab2; 
 tab2=(int**)malloc(w*sizeof(int*)); 

for(i=0; i<w; i++){ 
   tab2[i]=(int*)malloc(k*sizeof(int)); 
//wypełnianie całej tablicy 1
for( j = 0; j < k; ++j)
    tab2[i][j]=1; 
} 

//ramka z 1, srodek 0
for(i = 1; i < w-1; ++i) 
 for(j = 1; j < k-1; ++j) 
  tab2[i][j]=0; 

//wypisanie
for(i = 0; i < w; ++i) {
for(j = 0; j < k; ++j) 
   printf("%d ",tab2[i][j]); 
printf("\n");
}


//uwolnienie pamieci 
for(i=0; i<w; i++) 
  free(tab2[i]);
 free(tab2);
 tab2 = NULL; 
 
 
return 0;    
} 

i nie umiem tego przerobić, żeby zamiast tablicy użyć struktury. przerobiłem na takie coś (fragment gdzie modyfikowałem kod):

struct pole {
    int wart; //9-bomba 0-8 puste
    int odk;  //czy odkryte pole
} **tab2; 

[...]

 tab2=(pole**)malloc(w*sizeof(pole*)); 

for(i=0; i<w; i++){ 
   tab2[i]=(pole*)malloc(k*sizeof(pole)); 
//wypełnianie całej tablicy 1
for( j = 0; j < k; ++j)
    tab2[i][j].wart=1; 
}  

[...]    
}

wyskakuje błąd kompilacji, w miejscu gdzie gdzie alokuje pamięć gdzie taje typ "pole". gdy zostawiam to jako int'y to kompiluje się, ale nie działa. nie wiem jak to powinno być poprawnie, wiec proszę o pomoc :) mam nadzieję, że nie napisałem tego zbyt chaotycznie

pozdrawiam
Koszkaty

1
tab2=(struct pole**)malloc(w*sizeof(struct pole*));
0

działa :) wielkie dzięki za pomoc i szybką reakcje

1 użytkowników online, w tym zalogowanych: 0, gości: 1