File binari
Accesso a file con record di
lunghezza costante
Struct Persona {
Int id;
Char nome[50];//nome e cognome
Double stipendio;
};
Persona dipendente;
Apertura file binario
fstream nomestream;
nomestream.open(nomefile,… ios::binary)
Accesso a file binario può essere
1.Sequenziale scrivere o leggere dal
primo record
2.Diretto posizionamento su uno
specifico record
Lettura e scrittura sequenziale su file
binario
• nomestream.write(variabile, sizeof(variabile));
• nomestream.read(variabile, sizeof(variabile));
Fare attenzione il metodo deve ricevere un puntatore a
carattere per cui si effettua un casting sul record…
……
SCRITTURA
• nomestream.write((char*) &variabile,
sizeof(variabile));
LETTURA
• nomestream.read((char*) &variabile,
sizeof(variabile));
Creazione archivio dipendenti
• Costruisci un creadipendenti.cpp che apre il
file binario in scrittura e lo richiude
• Il file fisico sarà anagrafe.dat
Costruiamo ora un file inserisci dipendenti.cpp
………..
……….
//inserite tutte le librerie
Struct Persona {
Int id;
Char nome[50];
Double stipendio;
};
Persona dipendente;
int main()
{ fstream fout;
fout.open(“anagrafe.dat, ios::app | ios::binary);
if (!fout)
{ cout<<“Error”<<endl; }
else { cout<<“matricola dip(0 per finire) :”;
cin>>dipendente.id;
while(dipendente.id!=0) {
cin.ignore(80,’\n’);
cout<<“cognome e nome dip:”;
cin.getline(dipendente.nome,50);
cout<<“stipendio in euro:”;
cin>>dipendente.stipendio;
fout.write((char *) &dipendente, sizeof(dipendente));
cout<<“inserisci matricola nuovo dip (0 per finire): “;
cin>>dipendente.id;
}
fout.close();
}
elimina il carattere di
terminazione. Rimuove tutti i caratteri dal buffer
di input fino a quando incontra il primo carattere
newline. Il numero 80 indica il numero massimo
di caratteri di una riga
cin.ignore(80,’\n’);
cin.getline(dipendente.nome,50)
gestisce
gli
ingressi di stringhe di caratteri che possono avere
anche spazi bianchi, si indica anche il numero
massimo di caratteri
L’operatore >> trascura gli spazi, le tabulazioni e i
caratteri di fine riga
Esercizio 1
• Visualizza i dipendenti registrati
Attività di progetto per il laboratorio:
Le informazioni relative ai partecipanti alle gare
studentesche di atletica vengono registrate in un archivio ad
accesso sequenziale.
1. Costruire il file binario creaArchivioGS.cpp
2. Costruire una procedura che inserisce atleti nell’archivio
3. Costruire una procedura che stampi a video gli atleti
registrati nell’archivio
4. Costruire una funzione che ci dica quanti 15enni
partecipano alle gare
5. Il tutto deve prevedere un menù di scelta iterata
Ricapitolando…..
Metodi su file di testo e binari
operazioni
Metodi/operatori
File di testo
File binario
Apertura
open()
.
scrittura
<<
.
scrittura
write()
.
lettura
read()
.
lettura
>>
.
chiusura
close()
.
.
.
Scarica

File binari