Newsgroup: it.comp.lang.c
Titolo: ricerca di record in un file

Salve,
dunque dovrei scrivere una funzione che mi ricerchi in un file dei record
disposti nel seguente modo:
(all'immissione del nome da parte dell'utente, il programma dovra' ricercare
tutti i nomi delle righe nel file....)
00|nome|numero
01|nome|numero
02|nome|numero
etc etc....
Chi mi sà indirizzare sulla giusta via ;) ?
Grazie, Nope

Chi mi sà indirizzare sulla giusta via ;) ?
usa una "struct" per rappresentare ogni record ed utilizza fread() e
fwrite() per leggere e scrivere i dati. Sarebbe bene, comunque,
organizzare i dati con una struttura ad albero binario autobilanciato
nel file per reperire in modo rapido i record. Non e' una cosa
semplice.
--
Andrea Laforgia
andrea_...@bigfoot.com


Scusa Andrea
ma non è più semplice usare la funzione fseek ?!?
ciao e buon anno
Maurizio

ma non è più semplice usare la funzione fseek ?!?
fseek non serve per cercare informazioni, ma per spostare il puntatore
del file.
--
Andrea Laforgia
andrea_...@bigfoot.com

 ma non è più semplice usare la funzione fseek ?!?
E che c'entra? La fseek() non è certo in grado di cercare un record
specifico in base ai dati in esso contenuti. Permette solo di
posizionare il puntatore di lettura/scrittura sull'ennesimo carattere
del file.
EMG

 del file
infatti intendevo, prima il posizionamento con il successivo
reperimento dei dati.
ciao Maurizio


Quindi proponi una ricerca sequenziale. Potrebbe essere accettabile o
meno, dipende principalmente dal numero di record logici contenuti nel
file.
EMG


più che altro...
se si usa un file indicizzato; l'accesso é diretto.
ciao
Maurizio

 se si usa un file indicizzato; l'accesso é diretto.
Proprio diretto mi pare difficile, a meno di non utilizzare un'ottima
chiave hash. Più probabilmente la ricerca con l'indice avrà complessità
logaritmica (ricerca binaria).
EMG


ok... mi hai invitato a carne e maccheroni come diciamo a napoli !!!
una bella ricerca con quick sort e non se ne parla più :-)
ciao
Maurizio

 una bella ricerca con quick sort e non se ne parla più :-)
Scusa se insisto ma quick sort, se non erro, richiede che il file sia
caricato interamente in memoria. Ci vorrebbe forse anche un merge sort o
qualcosa del genere.
EMG

 EMG
si ma il qsort , nel caso peggiore, é "migliore" del merge sort.
cmq mi riferivo ai daticaricati in memoria
ciao
Mauiziwio


ma se usato in maniera corretta...anche dell'ennesimo record del file.
ciao
Maurizio

 cmq mi riferivo ai daticaricati in memoria
Però non è detto che il file possa essere caricato tutto in memoria, non
ti pare?
EMG

 ma se usato in maniera corretta...anche dell'ennesimo record del file.
Certo, ma non ci puoi fare una ricerca, giusto?
EMG


penso che su gli indici si :-)
te ne intendi di database relazionali ?
ciao
Maurizio

 te ne intendi di database relazionali ?
Un po', ma non c'entra niente né con il thread corrente né con il topic
del gruppo.
EMG

 fosse quello di utilizzare la fseek() per le ricerche su di un file.
Merge Sort, senza ombra di dubbio... ;)

>te ne intendi di database relazionali ?
Personalmente, tanto bene da consigliare di non parlarne in un ng sul
C, al fine di evitare un sicuro off-topic.
Andrea Laforgia (andrea_...@XXXbigfoot.com)
------------------------------------------------
Il mio indirizzo di posta elettronica è inattivo 
per il momento.