[C] allocazione dinamica di un array di strutture
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:
ma come potrei fare se a priori non so il numero di righe del file?
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
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.
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.
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
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
Le limitazioni che hai elencato non esistono.. Per allocare un array di strutture devi semplicemente usare malloc o calloc usando le dimensioni corrette..
Nel caso di un array di strutture non saprei come fare, nel senso:
se ho un array di caratteri posso fare cosi:
ma per un array strutture?
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?
struct lotto *lotti = malloc(N*sizeof(struct lotto)); // tecnicamente il cast non è necessario in C