/*scrivistudente.cpp*/

// Scrittura dei dati di uno studente in fondo al
// file studenti.dat in modalità binaria

#include <iostream>
#include <fstream>

using namespace std;

// Struttura dati dello studente. In un programma ben fatto,
// la definizione dello struct dovrebbe apparire soltanto
// in un file header, coś da essere condivisa da tutti i programmi
// che la utilizzano senza essere riscritta.
struct studente {
char nome [100];
int matricola;
};

int main (void)
{
// Lettura dei dati di un nuovo studente
studente s;
cout << "Nome dello studente da inserire: ";

// Il nome viene letto con getline per accettare anche eventuali
// spazi e segni di interpunzione
cin.getline (s.nome, 100);
cout << "Matricola: ";
cin >> s.matricola;

// Apertura del file studenti.dat in modalità append
// e sua associazione al flusso f
ofstream f ("studenti.dat", ios::app);

// Posizionamento del flusso alla fine del file
f.seekp (0, ios::end);

// Scrittura in modalità binaria dei dati del nuovo studente,
// contenuti nella variabile s, all'interno del file
f.write ((char*)&s, sizeof(studente));

// Chiusura del file
f.close ();

return 0;
}