Gestione in lettura scrittura di un file binario sia in accesso sequenziale che diretto. Attraverso un menù di scelta l’utente può decidere se scrivere e leggere un file in modo sequenziale o ad accesso diretto in C++ #include <iostream>#include <fstream>using namespace std;#define MAX 100fstream fp;fstream fd;struct prodotto{ char code[4]; int quantity; float price; char description[50];};struct prodotto p[MAX];void scrivi(fstream& f, prodotto p[]){char risp=’n’;prodotto t;int k=0;do { cout <<“\n Digita i dati:\n”; cout <<“\n Codice di 4 caratteri\n”; cin.ignore(1,’\n’); cin.getline(p[k].code,5); cin.ignore(1,’\n’); cout << “\n Digita la quantità\n”; cin >> p[k].quantity; cout <<“\n Digita il prezzo\n”; cin>>p[k].price; cout<<“\n Digita la Descrizione \n”; getchar(); cin.getline(p[k].description,30); f.write((char*)&p[k],sizeof(struct prodotto)); k++; cout << “Altri Dati s/n ? “; risp=getchar(); } while (risp==’s’);}void scrivi1(fstream& f, prodotto p[]){char risp=’n’;int k=0;prodotto temp;long posizione=0;int indice=0;do { cout<<“\n Digita i dati:\n”; cout<<“\n Codice di 4 caratteri\n”; cin.ignore(1,’\n’); cin.getline(p[k].code,5); cin.ignore(1,’\n’); cout<<“\n Digita la quantità\n”; cin>>p[k].quantity; cout<<“\n Digita il prezzo\n”; cin>>p[k].price; cout<<“\n Digita la Descrizione \n”; getchar(); cin.getline(p[k].description,30); do { cout<<“\n Inserisci indice del Record maggiore di zero\n”; cin>>indice; } while (indice<=0); posizione=(indice-1)*sizeof(struct prodotto); f.seekp(posizione); if (f.read((char*)&temp,sizeof(struct prodotto)) && (temp.code!=’\0′)) { cout<<“\n Prodotto già inserito con indice %d\t”<<indice; cout<<“\n Inserisci un altro indice”; cout<<“\n Ecco i dati presenti:\t Codice %s “,temp.code; cout<<“\n Descrizione:%s\t “<<temp.description;} else f.write((char*)&p[k],sizeof(struct prodotto)); k++; cout<< “\nAltri Dati s/n ?”; getchar(); risp=getchar(); } while (risp==’s’);}void leggi(fstream& f,struct prodotto p[]){ int k=0; int i; while (!f.eof()) { f.read((char*)&p[k],sizeof(struct prodotto)); k++; } cout <<“\n Stampa a video dei dati dei prodotti\n”; for (i=0;i<k-1;i++) { cout<<“\nCodice:\t “<<p[i].code; cout<<“\nDescrizione\t “<<p[i].description; cout<<“\nQuantità disponibile\t “<<p[i].quantity; cout<<“\nPrezzo del Prodotto\t” <<p[i].price; cout<<“\n——–\n”; } cout<<“\n Stampa Terminata\n”;}void leggi1(fstream& f,struct prodotto p[]){ struct prodotto temp; long posizione=0; int indice=0; do { cout<<“\n Inserisci l’indice del prodotto > 0 \n”; cin>>indice; if (indice <=0) …
Tu devi essere registrato per visualizzare questo articolo.
Esegui la registrazione per accedere a questo contenuto.