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. |