PDA

View Full Version : [C]array dinamico di una struttura


Romba91
14-10-2008, 18:57
ciao ragazzi!ho un piccolo problemino
ho fatto un programma in C dove ho varie strutture(quella problematica è così):

struct razza{
char nome[15];
int vitamin,vitamax,forzamin,forzamax,ablmin,ablmax,arma,armatura,anelli;
};
typedef struct razza Razza;

variabili globale N che è = alle righe che ci sono dentro un file,se aumento le righe del file devo anche aumentere N
e dentro il main:
Razza gen[N];

il prof mi ha detto che così va bene ma sarebbe meglio se ogni volta leggessi dal file le righe e usassi la malloc o la calloc x fare il vettore,quindi ho sostituito gen[N] con *gen, ho una variabile con le righe del file ma ora come faccio a fare un vettore gen come quello che avevo prima?

spero di essermi spiegato abbastanza chiaramente...grazie in anticipo

||ElChE||88
14-10-2008, 19:19
Fai leggere il numero di righe al programma e salvalo in N...

Per allocare l'array dinamicamente:

Razza* gen = (Razza*)calloc(N, sizeof(Razza));

if (gen == NULL)
{
//La memoria non è stata allocata
}


Poi quando non ti serve più devi anche liberarla:

free(gen);

Romba91
14-10-2008, 19:30
è la stessa cosa se faccio prima
Razza* gen;
e poi
gen=(Razza*)calloc(N, sizeof(Razza));??
altrimenti mi verrebbe un po difficile la cosa...

||ElChE||88
14-10-2008, 19:33
è la stessa cosa se faccio prima
Razza* gen;
e poi
gen=(Razza*)calloc(N, sizeof(Razza));??
altrimenti mi verrebbe un po difficile la cosa...
Si, è uguale.

PS: La parte importante (probabilmente quella che voleva il professore) è leggere il numero di linee dal file...

Romba91
14-10-2008, 19:40
ah ok grazie 1000;)
cmq i file li sappiamo usare abbastanza bene la parte un po + difficile per noi è l'uso della malloc o calloc dato che ce l'ha spiegate da poco e non abbiamo molta confidenza...
e grazie ancora