Ho un problema con un array di puntatori ad array (tutti e due, purtroppo, dinamici).
In pratica devo creare una lista, variabile, di pacchetti da mandare, ogni pacchetto può avere dimensione variabile.
Il mio problema è che devo ottenere in qualche modo, quando devo riallocare lo spazio per poter aggiungere sia spazio per 1 nuovo puntatore, sia spazio per l'array a cui punta, il numero di elementi della mia lista e il numero di elementi dell'array pacchetto (dato che è un array char equivale quindi alla sua dimensione), solo che la mia lista in un dato istante punta ad 1 solo puntatore... come faccio a sapere quanti sn gli altri?
E idem per il puntatore all'array pacchetto.. punta sl al primo elemento.. come faccio a sapere quant è grosso il mio pacchetto?
Contate che la scelta della dimensione del pacchetto e la riallocazione della lista avvengono in funzioni differenti e anche moduli differenti.
Come faccio? devo usare delle variabili globali?
Devo passarmi tutte le volte come parametro la dimensione? (che è un casino.. dovrei passarlo in un mucchio di funzioni diverse in modo che arrivi a destinazione :|).
perchè non usi una lista dinamica a in cui ogni elemento ha una variabile che punta all'elemento successivo?
ovviamente sfrutti una struct per definire le variabili dell'oggetto e per contare gli elementi della lista ti basta usare una funzione che non fa altro che scorrere la lista, incrementando un contatore, fino a quando l'ultimo elemento non punta a nessuno oggetto.
tipo:
typedef struct{
int dim_packet;
... altro ...
elem *next;
}elem;
poi puoi scorrere la lista con:
elem *lista /* puntatore al primo elemento */
elem *temp;
int counter=0;
temp=lista;
do{
if (temp!=NULL) {
temp=temp->next;
counter++;
}
}while(temp!=NULL);
printf("Numero di elementi: %i", counter);