Ciao, innanzi tutto grazie della risposta
ti posto in seguito una parte del codice.. come puoi notare, ho considerato un file binario e ho usato l'operatore ">>"(lettura) e "<<"(scrittura)... Questo mi ha portato ad avere una lunga discussione con la mia prof. di informatica, che riteneva inappropriato l'uso degli operatori ">>" "<<" in un contesto in cui si operava su file binari..
Non ce bisogno di dirti che io mi sono trovato in totale disaccordo con lei (il programma mi funziona una meraviglia).. e vorrei dei pareri da persone competenti in materia.
Quindi, l'uso di questi operatori è scorretto? può comportare dei problemi a livello di gestione di stringhe? sarebbe meglio usare le funzioni file.write e file.read oppure sono praticamente identici?
codice:
void Visualizza()
{
bool VerificaData(int G, int M, int A);
File.open("Dati.dat", ios::in|ios::binary);
do
{
Verifica=true;
cout << "Inserisci la data di oggi: (GG/MM/AAAA) " << endl;
cout << "Giorno: ";
cin >> Data[2].Giorno;
cout << "Mese: ";
cin >> Data[2].Mese;
cout << "Anno: ";
cin >> Data[2].Anno;
VerificaData(Data[2].Giorno,Data[2].Mese,Data[2].Anno);
}while(Verifica==false);
while(File.eof()!=true) //quando termina il file, esci dal ciclo
{
Posiz=File.tellg();
File>>Data[3].Giorno>>Data[3].Mese>>Data[3].Anno;
File.ignore(504, '\n');
if((Data[2].Giorno==Data[3].Giorno) && (Data[2].Mese==Data[3].Mese) && (Data[2].Anno==Data[3].Anno))
{
Trovato=true;
File.seekg(Posiz);
File.ignore(17, '#');
File.getline(DescrizioneImpegno.Descrizione,500);
cout << DescrizioneImpegno.Descrizione << endl;
break;
}
}
if(Trovato==false)
{
cout << "Non è stato trovato nessun impegno per questo giorno!" << endl;
}
File.close();
main();
}
void Carica()
{
bool VerificaData(int G, int M, int A);
do
{
Verifica=true;
cout << "Inserisci la data dell'impegno: (GG/MM/AAAA) " << endl;
cout << "Giorno: ";
cin >> Data[0].Giorno;
cout << "Mese: ";
cin >> Data[0].Mese;
cout << "Anno: ";
cin >> Data[0].Anno;
VerificaData(Data[0].Giorno,Data[0].Mese,Data[0].Anno);
}while(Verifica==false);
File.open("Dati.dat", ios::out|ios::app|ios::binary);
ScriviData(Data[0].Giorno,Data[0].Mese,Data[0].Anno);
cout << endl << "Descrizione Impegno: " << endl;
cout << "Ora Scadenza: (OO:MM) ";
cin >> DescrizioneImpegno.Ora;
File << DescrizioneImpegno.Ora << " ";
cout << "Descrizione: (aggiungere '+ ' prima della scrittura) (max: 500ch) " << endl;
cin >> DescrizioneImpegno.Descrizione;
gets(DescrizioneImpegno.Descrizione); //accetta gli spazi;
File << " #" << DescrizioneImpegno.Descrizione << "# " << endl;
File.close();
main();
}