Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABORT.docx
Скачиваний:
2
Добавлен:
09.09.2019
Размер:
69.94 Кб
Скачать

Int mark[10000];

main()

{

/* это - пример употребления времени посредством использо-

вания difftime. Она вычисляет, сколько времени ей потребовалось,

чтобы найти простые числа от 3 до 10000. Для вывода простого чис-

ла уничтожается самый внешний цикл и комментарии ограничителей

вокруг "printf("%d\t",n);"*/

time_t start, finish;

register int i, loop, n, num, step;

time(&start);

for(loop=0; loop<1000; ++loop)

for(num=0,n=3;n<10000;n+=2)

If(!mark[n]) {

/* printf("%d\t",n); */

step=2*n;

for(i=3*n;i<10000;i+=step)

mark[i]=-1;

++num;

}

time(&finish);

/* в "sieve" печается в среднем 1000 циклов */

printf("\nProgram takes %f seconds to find %d

primes.\n",

difftime(finish,start)/1000,num);

}

На выходе:

Program takes 0.482000 seconds to find 1228 primes.

DOSEXTERR

#include <dos.h>

Int dosexterr(buffer);

struct DOSERROR *buffer;

Описание.

Функция dosexterr получает значение регистра, возвращаемого

системным вызовом MS DOS 59H, и записывает это значение в струк-

туру, на которую указывает buffer. Эта функция полезна, когда

системные вызовы вырабатываются в версиях MS DOS 3.0 и старших и

которые предлагают расширенную обработку ошибок. Более подробно

системные вызовы MS DOS описаны в руководстве "Microsoft MS DOS

Programmer's Reference Manual".

Тип структуры DOSERROR объявлен в <dos.h> и представляет

следующее:

struct DOSERROR {

Int exterror;

char class;

char action;

char locus;

};

Аргумент NULL-указателя посредством dosexterr определяет в

AX возвращаемое значение.

Возвращаемое значение.

Функция dosexterr возвращает значение в регистр AX (иден-

тично значению в поле структуры exterror).

См.также perror.

Пример:

#include <dos.h>

#include <fcntl.h>

#include <stdio.h>

struct DOSERROR doserror;

int fd;

if ((fd=open("test.dat",O_RDONLY))==-1 {

dosexterr(&doserror);

printf("error=%d,class=%d,action=%d,locus=%d\n",

doserror.exterror, doserror.class,

doserror.action, doserror.locus);

}

DUP - DUP2

#include <io.h> требуется только для объявления

функций

int dup(handle); создает второй handle-р для

открытого файла

int handle; handle-р, ссылающийся на открытый

файл

int dup2(handle1, handle2);

форсирует handle1 для ссылки на

handle2 файла

int handle1; handle-р, ссылающийся на открытый

файл

int handle2; любое значение handle

Описание.

Функции dup и dup2 вызывают второй handle-р файла, связан-

ный с открытым файлом. Операции в файле могут пересылаться

handle-ром, тогда как все handle-ры, связанные с заданным файлом,

используют тот же самый указатель на файл. Создание нового handle

не влияет на тип доступа файла.

Функция dup возвращает следующий доступный handle-р для за-

данного файла. Функция dup2 форсирует (force) заданный handle,

т.е. handle2, чтобы сослаться на тот же самый файл, на который

ссылается handle1. Если во время вызова handle2 связан с открытым

файлом, то этот файл закрывается.

Возвращаемое значение.

Функция dup возвращает новый handle-р файла. Функция dup2

возвращает 0 в случае успеха. Если возникает ошибка, обе функции

возвращают -1 и errno устанавливается в одно из следующих значе-

ний.

ВЕЛИЧИНА СМЫСЛОВОЕ ЗНАЧЕНИЕ

EBADF Неверный handle-р файла

EMFILE Другие handle-ры файла для него

не доступны, т.к. много открытых

файлов

См. также close, creat, open.

Пример:

#include <io.h>

#include <stdlib.h>

int fh;

.

.

.

/* выбирает другой handle-р файла, чтобы сослаться на тот

же самый файл, на который указывает handle1 (stdout) */

fh = dup(1);

if (fh == -1)

perror("dup(1) failure");

/* создает handle3 файла для ссылки на тот же самый файл,

на который ссылается handle 1 (stdout). Если handle3 файла явля-

ется также открытым, он закрывается первым */

fh = dup2(1,3);

if (fh != 0)

perror("dup2(1,3) failure");.

ECVT

#include <stdlib.h> требуется только для

объявления функции

char *ecvt(value, ndigits, decptr,signptr);

double value; преобразуемое число

int ndigits; количество запоминаемых

цифр

int *decptr; указатель на запомненное

положение десятичной точки

int *signptr; указатель на запомненный

индикатор знака

Описание.

Функция ecvt преобразовывает число с плавающей точкой в

символьную строку. Value - это число с плавающей точкой, которое

должно быть преобразовано. Ecvt запоминает цифры ndigits из value

как строку и добавляет к ней нулевой символ ('\0'). Если количество

цифр в value превышает ndigits, последняя значащая цифра округля-

ется. Если цифр меньше, чем ndigits, строка дополняется нулями.

В строке хранятся только цифры. Положение десятичной точки

и знака в value может быть определено после вызова функции из

decptr и signptr. Аргумент decptr указывает на целое число, опре-

деляющее положение десятичной точки относительно начала строки. 0

или отрицательное значение означают, что десятичная точка распо-

ложена левее первой цифры. Аргумент signptr указывает на целое,

определяющее знак преобразуемого числа. Если signptr равно 0,

число положительное, иначе - отрицательное.

Возвращаемое значение.

Функция ecvt возвращает указатель на строку цифр. В случае

ошибки возвращаемого значения нет.

См.также atof, atoi, atol, fcvt, gcvt.

Замечание. Функции ecvt и fcvt используют для преобразова-

ния один и тот же статически распределенный буфер. Каждое обраще-

ние к одной из этих процедур уничтожает результат предыдущего об-

ращения.

Пример:

#include <stdlib.h>

int decimal, sign;

char *buffer;

int preciision=10;

buffer=ecvt(3.1415926535,precision,&decimal,&sign);

/*буфер содержит "3141592654",decimal=1,sign=0*/

EOF

#include <io.h> требуется только для объявления

функции

int eof(handle);

int handle; handle-р, ссылающийся на открытый

файл

Описание.

Функция eof определяет достижение конца файла для файла,

ассоциированного с handle.

Возвращаемое значение.

Эта функция возвращает значение 1, если текущая позиция яв-

ляется концом файла; 0 - в противном случае. Возвращаемое значе-

ние -1 свидетельствует об ошибке; errno устанавливается в EBADF,

инициируя при этом неверный handle файла.

См. также clearerr, feof, ferror, perror.

Пример:

#include <io.h>

#include <fgntl.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]