[C] allocazione dinamica di un array di strutture

frab1
Buongiorno,
sto scrivendo un piccolo sorgente che elabora un file .txt contenente info relativa ad un magazzino..
Voglio procedere per strutture, ma mi chiedevo come fosse possibile allocare dinamicamente un vettore di strutture...io di solito faccio cosi nel caso statico:
struct lotto{
	int cod_lotto;
	char cod_prod[10];
	char data_scad[7];
	int confezioni_rimaste;
	int scaffale;
};

struct lotto lotti[5];

ma come potrei fare se a priori non so il numero di righe del file?

Risposte
apatriarca
Se non sai la dimensione dell'array da allocare è necessario fare una delle due operazioni seguenti:
1. Leggere il file per contare il numero di righe e quindi calcolarti la dimensione dell'array
2. Ridimensionare l'array durante la lettura quando è stato riempito completamente.

frab1
Avevo pensato anche io ad un contatore..ma ho riscontrato i seguenti problemi:
1) la dimensione mi serve per allocare un vettore di strutture(che devo necessariamente dichiarare nel main)
2)se lo dichiaro nel main poi perdo il riferimento al vettore di strutture nelle varie funzioni del mio sorgente...

:-S

apatriarca
Le limitazioni che hai elencato non esistono.. Per allocare un array di strutture devi semplicemente usare malloc o calloc usando le dimensioni corrette..

frab1
Nel caso di un array di strutture non saprei come fare, nel senso:
se ho un array di caratteri posso fare cosi:

char *str;
str = (char *) malloc(N*sizeof(char));  //N =n°di elementi


ma per un array strutture?

apatriarca
struct lotto *lotti = malloc(N*sizeof(struct lotto)); // tecnicamente il cast non è necessario in C

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.