Altra piccola cosa..fino a qualche ora fa funzionava -.-'
Da premettere che la stessa e identica cosa la faccio per un'altra class e funziona..
il mio obbiettivo è quello di conoscere quanti utenti sono presenti nel file..bene ho creato la seguente funzione
int individua_utenti()
{
int dim,p;
FILE *fp;
if((fp=fopen("Utenti.txt","rb"))!=NULL)
{
fseek(fp,0,2);
dim=ftell(fp);
cout<<"dimensione: "<<dim<<endl;
cout<<"dimensione classe: "<<sizeof(class utente);
p=(dim/sizeof(class utente));
fclose(fp);
return p;
}
else
return 0;
}
la mia class utente è derivata di persona ed è così definita (copio giusto le variabili):
class utente:public persona
{
int codice_utente;
long long recapito_telefonico;
char citta_residenza[20];
public: ecc
in persona sono presenti: char nome_utente[20], char cognome_utente[20] e int eta;
ora...mettendo un pò di cout qui e lì per verifare la dimensione ottengo dimensione file 86 e dimensione classe 96 (se vado ad inserire un solo utente!)
p.s.
cout<<"dimensione: "<<dim<<endl;
cout<<"dimensione classe: "<<sizeof(class utente);
che sono presenti nel primo codice le ho messe per verifare le dimensioni effettive
Questa che ora riporto è la funzione della classe per il caricamento su file
void utente::carica_utenti_su_file()
{
FILE *fp;
fp=fopen("Utenti.txt","ab");
fwrite(&nome_utente,sizeof(char),20,fp);
fwrite(&cognome_utente,sizeof(char),20,fp);
fwrite(&eta,sizeof(int),1,fp);
fwrite(&codice_utente,sizeof(int),1,fp);
fwrite(&recapito_telefonico,sizeof(long),2,fp);
fwrite(&citta_residenza,sizeof(char),20,fp);
fclose(fp);
}