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(); }

Rispondi quotando