Реагування на помилки
Програма 26.10 показує найбільш зручний спосіб обробки помилок. Всі дискові операції перевіряються після їх виконання. Якщо виникла помилка, виводиться повідомлення про це і програма завершує свою роботу. В програмі використовується раніше описана техніка, яка полягає в перевірці значення, що повертається з об’єкту, і визначення статусу його помилки. Програма відкриває вихідний потоковий об’єкт, записує весь масив цілих чисел єдиним викликом write() та закриває об’єкт. Потім відкриває вхідний потоковий об’єкт і зчитує масив викликом функції read().
Далі приведений текст програми 26.10.
#include<fstream>
#include<iostream>
#include<conio>
using namespace std;
#include<process.h>
const int MAX=1000;
int buff[MAX];
//////////////
int main()
{int j=0;
for(j=0;j<MAX;j++) //заповнити буфер даними
buff[j]=j;
ofstream os; //створити вхідний потік
os.open(“edata.dat”,ios::trunc|ios::binary);
if(!os)
{cerr<<”Nemozlyvo vidkryty vhidnyj file\n”;getch();exit(1);}
cout<<”Write…\n”;
//записати вміст буферу
os.write(reinterpret_cast<char*>(buff),MAX*sizeof(int));
if(!os)
{cerr<<”Zapys v file nemozlyvyj\n”;getch();exit(1);}
os.close(); //закриття потоку
for(j=0;j<MAX;j++)
buff[j]=0; //очистка буфера
ifstream is;
is.open(“udata.dat”,ios::binary); //імена edat.dat i udata.dat відрізняються
if(!is)
{cerr<<”Nemozlyvo vidkryty vhidnyj file\n”;getch();exit(1);}
cout<<”Ide 4ytanna…\n”;//читання файлу
is.read(reinterpret_cast<char*>(buff),MAX*sizeof(int));
if(!is)
{cerr<<”Nemozlyvo 4ytaty file\n”;getch();exit(1);}
for(j=0;j<MAX;j++)
if(buff[j]!=j)
{cerr<<”\nDani nekorektni\n”;getch();exit(1);}
cout<<”\nDani korektni\n”;
getch();
return 0;
}
Програма 26.10
Дата добавления: 2015-08-26; просмотров: 567;