- •Void abort();
- •Int errno;
- •26 Символов и имеет форму, приведенную ниже в примере:
- •Int errno;
- •Void assert(expression);
- •Int n; целый порядок
- •Int (*compare)(); указатель на функцию сравнения
- •0 Element1 равен element2
- •Int compare();
- •Int argc;
- •Int numread;
- •Int chdir(pathname);
- •Void clearerr(stream);
- •Int cprintf(format-string[,argument...]);
- •Int result;
- •Int mark[10000];
- •If(!mark[n]) {
- •Int dosexterr(buffer);
- •Int exterror;
- •Int fh, count;
- •Int result;
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>