exit() // вспомогательная функция
void error (const char * message)
{
cerr
<<'\n' << message <<'\n' ;
exit(1);
}
int main ()
{
char buf[128]; // вспомогательный буфер
ifstream fin; // 1. Создание потоков двух классов
ofstream fout;
fin.open("С:\\in.dat"); // 2. Открытие файлов в соответствующих режимах и связывание их с потоками
if (!fin.good()) error("He могу открыть файл для чтения.");
fout.open("С:\\out.dat");
if (fout.fail()) error("He могу открыть файл для записи.");
char ch; // 3. Выполнение операций обмена
while (fin.getline(buf, sizeof(buf))) fout << buf <
if (!fin.eof() || !fout.good())
error("Ошибка ввода-вывода при копировании файлов");
fin.close(); // 4. Закрытие файлов, разрыв связей потоков с файлами
fout.close();
return 0;
}
Рассмотрим программу копирования файла in.dat в файл out.dat. Предполагается, что файлы находятся в корневом каталоге логического диска С. Файл in.dat содержит строки символов, Длина файловой строки не превосходит 128 символов.
Для данного примера причинами выдачи сообщений «Не могу открыть файл...» могут быть следующие:
отсутствие файла in.dat в корневом каталоге логического диска A или его особые атрибуты;
неготовность устройства (не вставлена дискета, не закрыт карман и др.);
у существующего файла out.dat установлен атрибут «только для чтения» или другие особые атрибуты.