02/11/11 15:46
Pitagora
in che senso non funziona? Cosa vuoi ottenere?
Più preciso, non chiediamo molto!
aaa
02/11/11 18:53
nessuno
A che serve la fin >> ... ?
Devi leggere il record con
fin.read
Utilizza un po' di linee di debugging (in cui visualizzi i valori di variabili importanti) per capire cosa succede durante il funzionamento del codice ...
Ultima modifica effettuata da nessuno 02/11/11 18:54
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
02/11/11 20:07
nessuno
Questa linea
while(fin>>dipendente.ID>>dipendente.cognome>>dipendente.nome>>dipendente.cell>>dipendente.card)
num_record++;
non funziona e num_record vale 0 (controlla con un po' di debugging).
Per trovare il numero dei record devi utilizzare la funzione tellg dividendo il risultato per la sizeof della struttura.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
03/11/11 7:05
paco87
scusami, io ho provato a vedere quanto vale num_record ed è giusto, è esattamnte il numero di record del file(per me 6, l'ho anke scritto nel commento); ho provato anche a visualizzare per ogni ciclo i valori di sx,dx e md e sono corretti; il problema è che la funzione seekg non si posiziona sul record con il numero md, neanche dopo fin.clear()!!
aaa
03/11/11 9:14
nessuno
C'è un equivoco di fondo ... tu stai utilizzando un approccio di lettura/scrittura di record (usando la struttura e la seek).
Con questo approccio devi usare la read e la write e non >> e << per leggere scrivere.
Scrivendo il file con la write e leggendolo con la read (ripeto, dato che usi la seek per posizionarti), non vedo problemi.
Al contrario, se scrivi il file con la write, non otterrai il valore corretto in num_record. Se hai scritto il file in precedenza senza la write, ogni record potrebbe avere lunghezza diversa da quella che ti attendi con la seek.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
03/11/11 11:18
paco87
Ti ringrazio innanzitutto per le tue risposte; il fatto è che i record hanno tutti la stessa lunghezza, dato che l'ho impostata con il metodo setw, la file.read nn riesce a leggermi tutto il record, e quando faccio una cout a video mi stampa metà record. Inoltre se leggo con fread e stampo a video il campo card nn vedo effettivamente il campo della struttura, ma un numero grandissimo.
aaa