6.9  Проверка ошибок при выполнении файловых операций

Рассмотренные нами программы не контролировали наличия ошибок при вводе-выводе, например: наличие файла при вводе или успешное выполнение операции при выводе в файл. Для контроля за наличием ошибок можно использовать функцию fail(). Если в процессе файловой операции ошибок не было, то эта функция возвратит ложь (0). Однако если встретилась ошибка, функция fail() возвратит истину. Например:

ifstream input_file("FILENAME.DAT");

if (input_file.fail())

{

cerr << "Ошибка открытия FILENAME.EXT" << endl;

exit(1);

}

Следующая программа TEST_ALL.CPP использует функцию fail() для проверки различных ошибочных ситуаций. Например:

#include <iostream.h>

#include <fstream.h>

void main(void)

{

char line[256] ;

ifstream input_file("BOOKINFO.DAT") ;

if (input_file.fail()) cerr << "Ошибка открытия BOOKINFO.DAT" << endl;

else

{

while ((! input_file.eof()) && (! input_file.fail()))

{

input_file.getline(line, sizeof(line)) ;

if (! input_file.fail()) cout << line << endl;

}

}

}