La nuova codifica, comunque sbagliata...
codice:
#include <iostream>
#include <stdio.h>
using namespace std;
struct lazio {
char nome [30];
};
int menu ();
void inserimento ();
void modifica ();
void stampa ();
//------------------------------- main ----------------------------------------
int main()
{
int s;
do {
s=menu();
switch (s) {
case 1: inserimento (); break;
case 2: modifica (); break;
case 3: stampa (); break;
case 4: cout<<" "<<endl;
}
} while (s!=4); return 0;
}
int menu ()
{
int scelta;
cout<<"1 Inserimento "<<endl;
cout<<"2 Modifica "<<endl;
cout<<"3 Stampa "<<endl;
cout<<"4 Exit "<<endl;
cout<<" Scelta -> ";
cin>>scelta;
return scelta;
}
void inserimento ()
{
FILE *fp;
lazio x;
fp=fopen("Lazio.dat","a+b"); //Apertura file
cout<<"Nome: ";
cin>>x.nome;
fwrite (&x, sizeof(lazio), 1, fp); //Scrittura nel file
fclose (fp);//Chiusura File
}
void modifica ()
{
FILE *fp;
lazio x;
char y[30];
int k=0;
int z=-1;
cout<<"Inserire un nome: ";
cin>>y; //Variabile che si confronterà con quella del file
fp=fopen("Lazio.dat", "r+b"); //Apertura File
while ( fread ( &x, sizeof (lazio), 1, fp ) ) //Ciclo che legge tutto il file
{
if ( strcmp (y,x.nome)==0 )
{
fseek (fp, 0, SEEK_CUR);
cout<<"Nuovo nome: ";
cin>>x.nome;
fseek(fp, z, SEEK_CUR);
fwrite (&x, sizeof(lazio), 1, fp); //Scriviamo sul File
k++; //Dopo aver trovato il nome, incrementiamo questa variabile per il controllo se qualcosa è stato modificato o meno
}
}
if (k==0) cout<<"Nome non trovato."<<endl;
fclose (fp);
}
void stampa ()
{
FILE *fp;
lazio x;
fp=fopen("Lazio.dat", "rb"); //Apertura File
while ( fread ( &x, sizeof (lazio), 1, fp ) )
{
cout<<"Nome: "<<x.nome<<endl;
}
fclose (fp);
}