- •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 errno;
main()
{
float x,y;
for (errno=EDOM; errno==EDOM; y=asin(x)) {
printf("Sine=");
scanf("%f", &x);
errno = 0;
}
printf("Arc sine of %f\n",x,y);
}
На выходе:
Sine = -1.001
asin: DOMAIN error
Sine = -1
Arc sine of -1.000000=-1.570796
ASSERT
#include <assert.h>
Void assert(expression);
Описание.
Процедура assert печатает диагностическое сообщение и за-
вершает вызванный процесс, если expression ложно, 0. Диагности-
ческое сообщение имеет форму:
Assertion failed: file <filename>, line <linenumber>,
где filename - имя исходного файла, linenumber - номер строки,
которая ошибочна.
Если expression истинно (ненулевое), никакого действия не
выполняется.
Процедура assert обычно используется для обнаружения логи-
ческих ошибок в программе. Выражение expression должно быть зада-
но таким образом, чтобы оно было истинным, если программа выпол-
няется как намечено. После того как отлажена программа, может
быть использован специальный "no debug" идентификатор NDEBUG для
удаления вызовов assert из программы. Если NDEBUG определен (лю-
бым значением) опцией командной строки /D или с директивой
#define, препроцессор языка Си удаляет все вызовы assert из ис-
ходной программы.
Возвращаемое значение.
Возвращаемого значения нет.
Замечание. Процедура assert реализована как макро.
Пример:
#include <stdio.h>
#include <assert.h>
analyse_string (string)
char *string;
{
/* проверка строки перед обработкой */
assert (string != NULL); /* не может быть NULL,
здесь должна быть
строка */
assert (*string != '\0'); /* не может быть
пустой */
.
.
.
}.
ATAN - ATAN2
#include <math.h>
double atan(x); вычисляет арктангенс x
double x;
double atan2(y,x); вычисляет арктангенс y/x
double x;
double y;
Описание.
Обе функции atan и atan2 возвращают результат арктангенса.
Если оба аргумента atan2 равны 0, функция устанавливает errno в
EDOM, печатает сообщение об ошибке DOMAIN в stderr и возвращает
0.
Обрaботкa ошибок может быть модифицировaнa при исполь-
зовaнии процедуры matherr.
См.тaкже acos, asin, cos, matherr, sin, tan.
Пример:
#include <math.h>
printf("%.7f\n", atan(1.0)); /* n/4 */
printf("%.7f\n", atan2(-1.0,1.0)); /* -n/4 */
На выходе:
0.7853982
-0.7853982
ATOF-ATOL
#include <match.h> Использует либо <match.h>,
#include <stdlib.h> либо <stdlib.h>.
double atof (string); преобразует строку string в
double
char *string строка, подлежащая преобра-
зованию
int atoi (string) преобразует строку string в
int
long atol (string) преобразует строку string в
long
char *string строка, подлежащая преобра-
зованию
Описание.
Эти функции преобразуют символьную строку в значение с пла-
вающей точкой двойной точности (atof), в целое значение (atoi)
или в длинное целое значение (atol).
Исходная строка string представляет собой последователь-
ность символов, которые могут быть интерпретированы как числовое
значение определенного типа.
Функция прекращает чтение исходной строки как только поя-
вится первый символ, который не может быть воспринят как часть
числа (им может быть NULL-символ, завершающий строку).
Функция atof предполагает, что строка string имеет следую-
щую форму:
[whitespace][sign][digits][{d|D|E}[sign]digits] ,
где [whitespase] состоит из пробелов и/или знаков табуляции,
которые игнорируются; [sign] означает "+" или "-"; [digits] -
- одна или несколько десятичных цифр. Если перед десятичной точ-
кой нет цифр, то хотя бы одна цифра должна стоять после нее. Де-
сятичные цифры могут следовать за показателем степени, который
состоит из буквы (d,D,e или E) и десятичного целого со знаком.
Функции atoi и atol не обрабатывают десятичные точки или
показатели степени. Аргумент string для этих функций имеет вид:
[whitespace][sign]digits ,
где whitespace, sign, digits обозначают то же, что и для atof.
Возвращаемое значение.
Каждая из функций возвращает значение типа double, int или
long, получаемое в результате интерпретации входных символов как
чисел.
Возвращаемое значение равно 0 (0L для atol), если вход не
может быть преобразован в значение данного типа. Возвращаемое
значение не определено в случае переполнения.
См. также ecvt, fcvt, gcvt.
Пример:
Следующие примеры показывают, как числа, записанные в виде
строк, могут быть преобразованы в числовые значения при использо-
вании функций atof, atoi, atol:
#include <math.h>
extern long atol (\ );
main (\ )
{
char *s;
double x;
int i;
long l;
s=" -2309.12E-15";
x=atof(s);
printf("%e\t",x);
s="7.8912654773d210";
x=atof(s);
printf("%e\t",x);
s="-9885";
i=atoi(s);
printf("%d\t",i);
s="98854 dollars";
l=atol(s);
printf("%ld\n",l);
}
BDOS
#include <dos.h>
int bdos(dosfn, dosdx, dosal);
int dosfn; номер функции
unsigned int dosdx; значение регистра DX
unsigned int dosal; значение регистра AL
Описание.
Функция bdos выполняет системный вызов MS DOS, номер кото-
рого определен в dosfn, после размещения соответственно в регист-
рах DX и AL значений dosdx и dosal. Функция bdos выполняет коман-
ду INT 21H для осуществления системного вызова.
Функция bdos задается для использования при вызовах
DOS-системных вызовов, которые не принимают аргументов или толь-
ко принимают их в регистры DX(DH,DL) и/или AL.
Возвращаемое значение.
Функция bdos возвращает значение регистра AX, запомненного
системным вызовом.
См.также intdos, intdosx.
Замечание. Этот вызов не может использоваться для осуществ-
ления системных вызовов, в которых указываются ошибки посредством
установки флага переноса. Т.к. Си-программы не имеют доступа к
этому флагу, статус возвращаемого значения не может быть опреде-
лен. В этом случае используется функция intdos.
Пример:
В следующем примере выводится подсказка 9 функцией MS DOS
(вывод строки). Поскольку значение регистра AL не является необ-
ходимым, то передается 0. Этот пример работает правильно только
для малой и средней моделей памяти, так как bdos не меняет значе-
ния сегментов регистров.
#include <dos.h>
char *buffer = "Enter file name :$";
/* AL не является необходимым, поэтому передается 0 */
bdos(9,(unsigned)buffer,0);
BESSEL
#include <math.h>
double j0(x);
double j1(x);
double jn(n,x);
double y0(x);
double y1(x);
double yn(n,x);
double x; значение с плавающей точкой