PDA

View Full Version : [C] array, stringhe e malloc


agosteeno
04-02-2010, 19:19
Salve, avrei un piccolo problema da risolvere: sostanzialmente devo creare un array di stringhe, ma inizialmente non so' quanto deve essere grande la dimensione dell'array. In pratica devo realizzare dei record che al loro interno hanno un array di stringhe, ma il numero di stringhe e' diverso, in generale per ogni record. Il numero di queste stringhe lo so' solo quando andro' a riempire i campi dell'array stesso. Quindi la soluzione sarebbe usare la malloc, ma non so' come fare. Vi sarei molto grato se potreste darmi una mano. Ciao a tutti!

fero86
04-02-2010, 19:48
facilissimo, usa il C++:
vector<string> ArrayDiStringhe;
fatto.

agosteeno
04-02-2010, 19:57
si, ma devo farlo in c...

fero86
04-02-2010, 21:29
si, ma devo farlo in c... vai di realloc e che Dio t'aiuti, perché non sará facile.

cionci
05-02-2010, 09:40
Usa una lista ;)
vai di realloc e che Dio t'aiuti, perché non sará facile.
Non mi sembra così complicato l'uso di realloc...fa tutto da sola, basta ricordarsi di riassegnare il nuovo puntatore.

agosteeno
05-02-2010, 18:29
non vorrei usare usare una lista, xche' si tratta della realizzazione di una piccola libreria per fare un dbms. Ci sarebbero gia' altre 2 liste collegate e siccome per ogni tabella il numero di campi del record e' fisso mi sembra stupido dovermi gestire una lista che avrebbe dimensione fissa. Pensavo piu' che altro di dare ai campi dimensione fissa e allocare con una malloc un array di vettori di caratteri di dimensione fissa appunto. Cosi' dovrebbe essere piu' facile. Che ne dite? Nella realta' credo che un dbms allochi proprio in questo modo, cosi' da poter leggere blocchi di dati da disco, invece che usare liste...

cionci
05-02-2010, 18:37
Fatti una allocazione a blocchi ;)
Ti allochi, ad esempio 4KB, poi se li riempi ne allochi altri 4KB.
Per l'accesso ad ogni pagina usi un vettore. Così usi la realloc sul vettore invece che sulla memoria ;)