PDA

Visualizza la versione completa : [C] Salvataggio numero indefinito di contatti di un'agenda


arm594
24-12-2011, 13:03
Salve a tutti! Devo creare un agenda in C, scrivendo su un file e utilizzando le strutture per scrivere,modificare e cancellare gli appuntamenti.. quindi ho implementato la struttura

struct Agenda
{
int giorno;
int mese;
int anno;
char nota[500];
}

e sapendo a priori il numero di strutture da creare, ad esempio 5, potrei fare:

Agenda app[5];
ofstream File("agenda.txt",ios::out);
for(int i=0;i<5;i++)
{
cout << "inserisci la data in cui vuoi scrivere un appuntamento (es. "gg/mm/aaaa")
cout<<"inserisci ora"<<endl;
cin>>app[i].ora;
cout<<"inserisci giorno"<<endl;
cin>>app[i].giorno;
cout<<"inserisci mese"<<endl;
cin>>app[i].mese;
cout<<"inserisci anno"<<endl;
cin>>ist[i].anno;
cout<<"inserisci nota"<<endl;
cin>>ist[i].nota;
File.write((const char*)&ist[i],sizeof(anagrafica));
}
ifstream FileIn("struttura.txt");
File.seekp(0,ios:: );

per˛ devo creare una funzione Scrivi() che mi permetta di inserire di volta in volta il nuovo appuntamento e quindi non sapendo a priori quante strutture verranno create non posso fare in questo modo. Cosa posso fare? Un vettore di strutture dinamico e in questo caso come lo implemento? Avete idee migliori?
Grazie mille in anticipo e buone feste :)

torn24
27-12-2011, 15:34
Se non hai la necessitÓ di memorizzarle in un array , basta una singola struttura!
Io parlo per linguaggio C e non C++ , crei un ciclo do while dove richiedi se vuole
inserire un nuovo contatto e memorizzi tutto in una struttura poi la scrivi nel file
con la funzione fwrite() crei una funzione per leggere il file con fread()
e una funzione per modificare il file aprendolo in scrittura e lettura e utilizzando la funzione
fwrite() e fseek()

Loading