Esercizio svolto sui file in C++

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.

inserimento cognome utente