MS-DOS для программиста© Александр Фролов, Григорий ФроловТом 18, М.: Диалог-МИФИ, 1995, 254 стр. 1.10. Программа ERRNOПриведем пример программы ERRNO (листинг 1.2), обрабатывающей ошибки с использованием переменной errno. При запуске вы должны передать этой программе параметр - имя любого существующего файла. Листинг 1.2. Файл errno\errno.cpp #include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#pragma argsused
void main(int argc, char *argv[])
{
FILE *stream;
// Открываем файл только для чтения
stream = fopen(argv[1], "r");
// Если произошла ошибка, выводим сообщение
if((stream == NULL) || (ferror(stream)))
{
perror("Не могу открыть файл");
printf("\nНажмите любую клавишу...");
getch();
exit(errno);
}
// Пытаемся выполнить запись в файл, который
// открыт только для чтения. Это приведет к ошибке.
fprintf(stream, "Пишем в файл\n");
if((stream == NULL) || (ferror(stream)))
{
// Выводим сообщение об ошибке двумя способами -
// с помощью функции perror и strerror
perror("Запись в защищенный файл");
printf("Запись в защищенный файл: %s\n",
strerror(errno));
exit(errno);
}
printf("\nНажмите любую клавишу...");
getch();
exit( 0 );
}
Программа открывает файл при помощи функции fopen, передавая ей в качестве последнего параметра строку "r". В результате файл будет открыт только для чтения. Если файл не удалось открыть, на консоль с помощью функции perror выводится сообщение об ошибке, вслед за чем работа программы завершается. Если файл открыт успешно, программа пытается
записать в него текстовую строку, вызывая для
этого функцию fprintf. Так как файл открыть только
для чтения, неизбежно возникнет ошибка. Описание
этой ошибки будет выведено на консоль два раза с
помощью функций perror и printf. В последнем случае
текстовое описание ошибки будет получено при
помощи функции stderror. |

