PDA

Visualizza la versione completa : [C++] Richiamo funzione di una classe


Redragon91
02-09-2011, 20:58
Salve ragazzi, spero di aver aperto correttamente il topic :D

Il problema si presenta durante la lettura dal file con consegente inserimento nel vettore di classi, non capisco dov' l'errore T___T
Se volete tutto il progetto, l'ho gi hostato e vi passo il link per capire meglio...
grazie a tutti voi in anticipo


SCRITTURA SU FILE

void scrittura(){
cout<<"Inserimento prodotti"<<endl;
FILE *fprod;
int header,ins;
string n,ID;
float pu;
fprod = fopen("prodotti.dat", "rb");
fseek(fprod,-sizeof(int),SEEK_END);
fread(&header,sizeof(int),1,fprod);
if(header<=0) {
cout<<"Non ci sono prodotti nel file"<<endl;
header=0; }
else cout<<"Sono presenti "<< header<<"prodotti"<<endl;
prodotti *prod;
cout<<"Quanti prodotti inserire? :"<<endl;
cin>>ins;
int tot=header+ins;
prod=new prodotti[tot];
rewind(fprod);
fread(prod,sizeof(prodotti),header,fprod);
fclose(fprod); for(int i=header;i<tot;i++){
cout << "Inserisci ID prodotto numero "<<i+1<<": ";
cin >> ID;
prod[i].setidprod(ID);
cout << "\nInserisci nome prodotto numero "<<i+1<<": ";
cin >> n;
prod[i].setnome(n);
cout << "\nInserisci prezzo unitario del prodotto numero "<<i+1<<": "; cin >> pu;
prod[i].setpunit(pu);
cout << endl; }
fprod=fopen("prodotti.dat","wb");
fwrite(prod,sizeof(prodotti),tot,fprod); //SCRITTURA VETTORE DI CLASSI
fwrite(&tot,sizeof(int),1,fprod); //SCRITTURA HEADER
fclose(fprod);
}


LETTURA DA FILE

void gestioneclienti(){
FILE *fprod; int header;
fprod=fopen("prodotti.dat","rb");
fseek(fprod,-sizeof(int),SEEK_END);
fread(&header,sizeof(int),1,fprod);
fclose(fprod);
prodotti *prod;
cout<<"L'header :"<<header<<endl;
prod=new prodotti[header];
fread(prod,sizeof(prodotti),header,fprod);
fprod=fopen("prodotti.dat","rb");
fread(&prod,sizeof(prodotti),header,fprod); //lettura del file istantanea

for(int i=0;i<header;i++){ //ERRORE A RUNTIME
cout<<"L'ID del prodotto : "<<prod[i].getidprod()<<endl
<<"la denominazione del prodotto : "<<prod[i].getidprod()<<endl
<<"il prezzo unitario del prodotto : "<<prod[i].getpunit()<<endl;
}

fclose(fprod);
}

Loading