Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структура и принципы работы MS-DOS.doc
Скачиваний:
65
Добавлен:
02.05.2014
Размер:
379.9 Кб
Скачать

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.