📄 a750binf.cpp
字号:
// nuovi elementi: ios::binary, clear()
// nuovi concetti: file binario
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
void acapo() {
while (cin.get() != '\n') continue;
}
struct tfilm {
char titolo[36]; // titolo del film
char regista[22]; // nome del regista
short int anno; // anno di uscita
float valutazione; // valutazione del film
};
const char * const file = "films.dat";
int main() {
cout.setf(ios::showpoint);
cout.setf(ios::fixed, ios::floatfield);
cout << setprecision(1);
tfilm film;
// mostra il contenuto iniziale
ifstream fin;
fin.open(file, ios::in | ios::binary); // file binario
if (fin) {
cout << "Il contenuto del file "
<< file << " e' il seguente:\n";
while (fin.read((char *) &film, sizeof film)) {
cout.setf(ios::left, ios::adjustfield);
cout << setw(30) << film.titolo << ": "
<< setw(20) << film.regista;
cout.setf(ios::right, ios::adjustfield);
cout << setw(8) << film.anno;
cout << setw(8) << film.valutazione << "\n";
}
}
fin.close();
// aggiungi altri dati
ofstream fout(file, ios::out | ios::app | ios::binary);
if (!fout) {
cerr << "Non riesco ad aprire il file " << file << " in scrittura!\n";
exit(1);
}
cout << "Introdurre il titolo del film (<Invio> per terminare):\n";
cin.get(film.titolo, 36);
while (film.titolo[0] != '\0') {
acapo();
cout << "Regista: ";
cin.get(film.regista,22);
acapo();
cout << "Anno: ";
cin >> film.anno;
cout << "Valutazione (0-10): ";
cin >> film.valutazione;
fout.write((char *) &film, sizeof film);
acapo();
cout << "Introdurre il titolo del film"
" (<Invio> per terminare):\n";
cin.get(film.titolo, 36);
}
fout.close();
// mostra il file modificato
fin.clear(); // non necessario in Turbo C++
fin.open(file, ios::in | ios::binary);
if (fin) {
cout << "Il seguente e' il contenuto del file " << file
<< " dopo l'aggiornamento:\n";
while (fin.read((char *) &film, sizeof film)) {
cout.setf(ios::left, ios::adjustfield);
cout << setw(30) << film.titolo << ": "
<< setw(20) << film.regista;
cout.setf(ios::right, ios::adjustfield);
cout << setw(8) << film.anno
<< setw(8) << film.valutazione << "\n";
}
}
fin.close();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -