[an error occurred while processing this directive]

В начало

ВВЕДЕНИЕ

1. ЭЛЕМЕНТЫ ЯЗЫКА СИ

2. СТРУКТУРА ПРОГРАММЫ

3. ОБЪЯВЛЕНИЯ

4. ВЫРАЖЕНИЯ

5. ОПЕРАТОРЫ

6. ФУНКЦИИ

7. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА И УКАЗАНИЯ КОМПИЛЯТОРУ

8. МОДЕЛИ ПАМЯТИ

9. КРАТКОЕ ОПИСАНИЕ БИБЛИОТЕКИ

10. ПОЛНОЕ ОПИСАНИЕ БИБЛИОТЕКИ

ПРИЛОЖЕНИЕ А. Перечень особенностей реализации языка Си в различных версиях СП MSC и СП ТС

ПРИЛОЖЕНИЕ Б. СООБЩЕНИЯ ОБ ОШИБКАХ

ПРИЛОЖЕНИЕ В. Перечень библиотечных функций с указанием отличий в реализации

СПИСОК ЛИТЕРАТУРЫ

10. ПОЛНОЕ ОПИСАНИЕ БИБЛИОТЕКИ

ABORT (MSC & ТС)

#include <process.h> /*используется только для описания функции*/

#include <stdlib.h> /*используйте либо process.h, либо stdlib.h*/

void abort();

Описание (ТС & MSC)

Функция abort выводит сообщение:

Abnormal program termination (ненормальное завершение программы) в файл stderr, затем прерывает программу посредством вызова функции _exit() с кодом завершения, равным 3.

Функция abort не сбрасывает буфера файлов. Управление возвращается процессу, который вызвал данный процесс (обычно операционной системе).

Описание (для MSC 5.1)

Функция abort выводит сообщение:

Abnormal program termination (ненормальное завершение программы) в файл stderr, затем производит вызов функции raise(SIGABRT). Действия, выполняемые при возбуждении сигнала SIGABRT, могут быть переопределены заранее с помощью функции signal(). По умолчанию действия для SIGABRT — завершение программы с кодом завершения, равным 3, и передача управления вызвавшему процессу.

Функция abort не сбрасывает буфера файлов, а также не вызывает обработки завершения функциями atexit() и onexit(). Управление возвращается процессу, который инициализировал вызванный процесс (обычно операционной системе).

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

Возврат управления из функции в точку вызова не происходит. Статус 3 возвращается процессу, из которого вызван данный процесс (операционной системе).

Смотри также

signal, raise, exit, _exit; функции группы ехес; функции группы spawn

ABS (ТС & MSC & ANSI)

#include <stdlib.h> /*(TC & MSC)*/

#include <math.h> /*(TC)*/

int abs(n);

int n;

Описание (ТС)

Функция abs возвращает абсолютное значение целочисленного аргумента.

Функция abs определяется как макрорасширение в файле stdlib.h, если Вы все же хотите использовать abs как функцию и подключаете файл stdlib.h, то необходимо отменить это макроопределение:

#include <stdlib.h>

#undef abs

Описание (MSC)

Функция abs возвращает абсолютное значение целочисленного аргумента.

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

Функция возвращает абсолютное значение аргумента, значение в диапазоне от 0 до 32767. Исключение: abs(-32768)=-32768.

Смотри также

cabs, fabs, labs

ABSREAD (ТС)

#include <dos.h>

int absread(int drive, int nsects, int sectno, void *buffer);

Описание

Функция считывает информацию из секторов на диске с учетом только формата диска. Игнорируется логическая структура диска и не обращается внимания на расположение файлов, FATы или каталоги.

Функция absread считывает сектора диска через прерывание 0x25.

Значение параметров следующее:

drive — номер, идентифицирующий устройство, с которого производится чтение (0=А, 1=В и т.д.);

nsects — количество считываемых секторов;

sectno — номер логического сектора, с которого начинается чтение;

buffer — адрес буфера памяти, в который читаются данные.

Количество считываемых секторов ограничено объемом памяти в сегменте, от адреса buffer до конца сегмента. Т.о., 64 Кбайта — максимальный объем информации, которая может быть считана при одном вызове функции absread.

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

При успешном завершении операции чтения функция возвращает значение 0. В случае ошибки возвращается значение -1, и переменная errno принимает значение регистра АХ, возвращаемое после системного вызова (см. документацию по ОС MS-DOS).

Смотри также

abswrite, biosdisk

Переносимость

Только для MS-DOS.

ABSWRITE (TC)

#include <dos.h>

int abswrite(int drive, int nsects, int sectno, void *buffer);

Описание

Функция записывает информацию в сектора на диске, учитывая только формат диска. Игнорируется логическая структура диска и не обращается внимания на расположение файлов, FATы или каталога.

abswrite пишет сектора на диск, используя системное прерывание 0x26. Значение параметров следующее:

drive — номер, идентифицирующий устройство, на которое производится запись (0=А, 1=В и т.д.);

nsects — количество записываемых секторов;

sectno — номер логического сектора, с которого начинается запись;

buffer — адрес буфера памяти, откуда читаются данные для записи на диск.

Количество записываемых секторов ограничено объемом памяти в сегменте, от адреса buffer до конца сегмента. Т.о., 64 Кбайта — максимальный объем информации, которая может быть записана при одном вызове функции abswrite.

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

При успешном завершении операции записи функция возвращает значение 0. В случае ошибки возвращается значение -1, и переменная errno принимает значение регистра АХ, возвращаемое после системного вызова (см. документацию по ОС MS-DOS).

Смотри также

absread, biosdisk

Переносимость

Только для MS-DOS.

ACCESS (ТС & MSC)

#include <io.h> /*используется только для описания функции*/

int access(pathname, mode);

char *pathname;

int mode;

Описание

Функция устанавливает: существует ли указанный файл и разрешен ли к нему доступ в данном режиме mode. Возможные значения mode:

06 Проверить возможность чтения и записи;

04 Проверить возможность чтения;

02 Проверить возможность записи;

00 Проверить существование файла.

В MS DOS все существующие файлы доступны для чтения. Таким образом, значения параметра mode 00 и 04, а также 02 и 06 идентичны.

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

0 — доступ разрешен

1 — доступ запрещен или файл не существует, при этом переменная errno устанавливается в одно из следующих значений:

EACCES — запрещен доступ в требуемом режиме;

ENOENT — файл или путь к нему не найден.

Смотри также

chmod, fstat, open, stat

ACOS (TC & MSC & ANSI)

#include <math.h>

double acos(x);

double x;

Описание

Функция acos вычисляет значение арккосинуса от х. Значение аргумента должно быть в пределах от -1.0 до 1.0.

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

Значение арккосинуса от аргумента.

Возвращаемое значение равняется 0.0, если значение аргумента х не находится в пределах от -1.0 до 1.0; при этом переменная errno устанавливается в EDOM и печатается сообщение об ошибке DOMAIN в файл stderr.

Обработку ошибочной ситуации можно изменить, используя функцию matherr.

Смотри также

asin, atan, atan2, cos, matherr, sin, tan

ALLOCMEM (TC), _DOS_ALLOCMEM (MSC 5.1)

Использование (ТС)

#include <dos.h>

int allocmem(unsigned size, unsigned *seg);

Использование (MSC 5.1)

#include <dos.h>

unsigned dos_allocmem(unsigned size, unsigned *seg);

Описание

Функция запрашивает сегмент памяти у операционной системы. Используется системный вызов 0x48 MS-DOS для выделения блока свободной памяти и возвращается адрес сегмента выделенного блока.

Значение параметров:

size — требуемый размер памяти в параграфах (один параграф равняется 16 байтам);

seg — указатель на переменную, куда будет записано значение адреса сегмента выделенного блока памяти.

(ТС) — присвоения значения переменной, на которую указывает seg, не производится, если нет достаточного свободного места.

(MSC) — если запрос не может быть удовлетворен, то в *seg записывается размер свободной памяти в параграфах.

Все выделяемые блоки выравниваются на границу параграфа.

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

В случае успешного завершения allocmem возвращает -1. В случае ошибки возвращается (число) (размер наибольшего свободного блока), а переменной _doserrno присваивается значение ENOMEM Недостаточно памяти.

Переносимость

Только для MS-DOS.

Смотри также

coreleft, freemem, malloc, setblock

ASCTIME (TC & MSC & ANSI)

#include <time.h>

char *asctime(struct tm *ptm);

Описание

Функция преобразует время из внутреннего представления, хранящегося в структуре (вид структуры описан в файле time.h), в строку символов. Строка-результат после выполнения ctime содержит 26 символов и имеет вид, показанный на следующем примере:

"Mon Dec 04 01:02:55 1989\n\0"

Каждое поле имеет символьный формат. Символ новой строки ('\n') и нулевой символ ('\0') занимают две последние позиции в строке.

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

Указатель на строку-результат.

Нет кодов ошибок.

Смотри также

ctime, ftime, gmtime, localtime, time

ASIN (TC & MSC & ANSI)

#include <math.h>

double asin(x);

double x;

Описание

Функция asin вычисляет значение арксинуса от х. Значение аргумента должно быть в пределах от -1.0 до 1.0.

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

Значение арксинуса от аргумента.

Возвращаемое значение равняется 0.0, если значение аргумента х не находится в пределах от -1.0 до 1.0; при этом переменная errno устанавливается в EDOM и печатается сообщение об ошибке DOMAIN в файл stderr.

Обработку ошибочной ситуации можно изменить, используя функцию matherr.

Смотри также

acos, atan, atan2, cos, matherr, sin, tan

ASSERT (TC & MSC & ANSI)

#include <assert.h>

void assert(expression);

Описание

Если значение выражения равно 0, то печатается диагностическое сообщение и завершается выполнение программы (для системы программирования MSC версии 5.1 в этом случае вызывается функция abort()).

Если значение выражения отлично от 0, то никаких действий не выполняется.

Диагностическое сообщение имеет следующую форму. Для системы программирования MSC версии 4.0 и системы программирования ТС версии 1.5:

Asseption failed: file <имя файла>, line <номер строки>

Для системы программирования ТС версии 2.0 и системы программирования MSC версии 5.1:

Asseption failed: <выражение>, file <имя файла>, line <номер строки>

Функция assert обычно используется, чтобы определить в программе логические ошибки (поддержка "защитного" программирования). Заданное выражение должно иметь значение, отличное от нуля, только в том случае, когда программа выполняется правильно (как задумано).

После того как программа отлажена, можно использовать идентификатор NDEBUG, чтобы не выполнять assert (не генерировать машинный код для проверок условия assert).

Если имя NDEBUG определено с помощью параметра /D в командной строке компилятора или с помощью директивы препроцессора #define, то процессор не будет обрабатывать assert в исходной программе.

Если NDEBUG определяется в файле (т.е. используется второй вариант), то директива препроцессора

#define NDEBUG

должна стоять раньше, чем директива препроцессора

#include <assert.h>

Функция assert реализуется как макроопределение.

ATAN, ATAN2 (ТС & MSC & ANSI)

#include <math.h>

double atan(x);

double(x);

double atan2(y, x); /*обратите внимание на порядок аргументов*/

double x;

double у;

Описание

Функции atan и atan2 вычисляют арктангенс х и у/х соответственно: atan возвращает значение в пределах от –pi/2 до pi/2; atan2 возвращает значение в пределах от -pi до pi.

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

atan и atan2 возвращают значение арктангенса.

Если оба аргумента функции atan2 нулевые, то возвращается 0.0, при этом errno устанавливается в EDOM и печатается сообщение об ошибке DOMAIN в stderr.

Обработку ошибки можно изменить, используя функцию matherr.

Смотри также

acos, asm, cos, matherr, sin, tan

ATEXIT (TC & MSC 5.1 & ANSI)

Использование (ТС)

#include <stdlib.h>

int atexit(func);

atextt_t func;

Использование (MSC 5.1)

#include <stdlib.h>

int atexit(func);

void (*func) (void);

Описание

Функция atexit регистрирует функцию, на которую указывает func, как функцию завершения. Эта функция будет вызвана в момент нормального (неаварийного) завершения программы.

В случае нормального окончания программы функция exit (вызываемая автоматически) вызывает функцию *func (без аргументов) перед возвратом в операционную систему.

В системе программирования ТС параметр имеет тип atexit_t, этот тип определен через typedef в файле stdlib.h. Каждый вызов функции atexit регистрирует новую завершающую функцию. Может быть зарегистрировано до 32 функций, которые будут выполнены в порядке "последний зарегистрирован — первый выполнен" (LIFO); это значит, что функция, зарегистрированная последней, выполнится первой.

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

В случае нормального окончания atexit возвращает 0, в случае ошибки (нет свободной памяти для регистрации функции) — ненулевое значение.

Смотри также

abort, onexit, exit, _exit, spawn...

ATOF, ATOI, ATOL (TC & MSC & ANSI)

#include <math.h> /*для функции atof*/

#include <stdlib.h> /*используйте math.h или stdlib.h*/

double atof(string);

char *string;

#include <stdlib.h> /*для функций atoi и atoll — только <stdlib.h>*/

int atoi(string);

long atol(string);

char *string;

Описание

Эти функции преобразуют строку символов в число с плавающей точкой двойной точности (функция atof), в целое (функция atoi) или в длинное целое (функция atol).

Строка символов является последовательностью символов, которая может быть интерпретирована как числовое значение определяемого типа. Функция заканчивает чтение символов из входной строки, как только встретит символ, который не может быть распознан как часть числа (этот символ может быть символом конца строки '\0').

Для функции atof строка должна иметь форму:

[пробелы][знак][цифры][.цифры][е[знак]цифры]

Первое поле может состоять из пробелов и табуляций, которые игнорируются. Знак — это символ "+" или "-".

Цифры — это одна или более десятичных цифр. Если нет цифр до десятичной точки, то они должны присутствовать после десятичной точки.

Знак 'е' или 'E' является признаком экспоненты.

Для функций atoi и atol строка должна иметь форму:

[пробелы][знак][цифры]

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

Функции возвращают: значение с плавающей точкой двойной точности (функция atof), целое число (функция atoi) или длинное целое число (функция atol).

Возвращается значение 0 (соответствующего типа), если не удалось преобразовать входную строку.

В случае переполнения atof возвращает плюс или минус значение HUGE_VAL, и функция matherr не переопределяет реакцию на такую ситуацию.

Смотри также

ecvt, fcvt, gcvt, scanf

BDOS, BDOSPTR (TC)

#include <dos.h>

int bdos(dosfun, dosdx, dosal);

int dosfun;

unsigned dosdx;

unsigned dosal;

int bdosptr(dosfun, argument, dosal);

int dosfun;

void *argument;

unsigned dosal;

Описание

Функции bdos и bdosptr обеспечивают непосредственный доступ ко многим системным вызовам ОС MS-DOS.

Доступ к системным вызовам, требующим параметра типа int, может быть осуществлен с помощью функции bdos. Доступ к системным вызовам, использующим параметр, являющийся указателем, осуществляется с помощью функции bdosptr.

Для малых моделей памяти (tiny, small, medium) эти две функции работают одинаково. Отличия проявляются при работе с большими моделями памяти, где существенно использование именно функции bdosptr для обращения к системному вызову, требующему указатель в виде параметра.

Параметр dosfun — это номер системного вызова.

Смотри справочное руководство по системе MS-DOS для получения информации о различных системных вызовах.

В малых моделях памяти параметр argument определяет значение регистра DX; в больших моделях памяти этот параметр определяет значения регистров DS:DX.

Параметр dosdx задает значение регистра dx.

Параметр dosal задает значение регистра al.

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

Функция bdos возвращает содержимое регистра АХ после выполнения системного вызова.

Функция bdosptr возвращает содержимое регистра АХ после выполнения системного вызова в случае его успешного завершения. В случае ошибки возвращается значение -1 и устанавливается код ошибки в переменных _doserrno и errno.

Смотри также

intdos, intdosx, int86, int86x

BESSEL (MSC)

#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;

int n;

Описание

Функции j0, j1 и jn вычисляют первую функцию Бесселя соответственно нулевого, первого и n-го порядка.

Функции у0, y1 и уn вычисляют вторую функцию Бесселя соответственно нулевого, первого и n-го порядка.

Аргумент х должен быть положительным.

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

Эти функции возвращают значение функции Бесселя от аргумента х.

Для функций j0, j1, у0, y1, если x слишком велико, возвращается значение 0.0, в переменную errno засылается значение ERANGE и выводится сообщение об ошибке TLOSS в файл stderr.

Для y0, y1 или уn, если значение х отрицательно, возвращается значение HUGE, переменной errno присваивается значение EDOM и выводится сообщение об ошибке DOMAIN в файл stderr.

Обработку ошибок можно изменить, используя функцию matherr.

Смотри также

matherr

BIOSCOM (ТС), _BIOS_SERIALCOM (MSC 5.1)

Использование (ТС)

#include <bios.h>

int bioscom(cmd, byte, port);

int cmd;

char byte;

int port;

Использование (MSC 5.1)

#include <bios.h>

unsigned _bios_serlalcom(cmd, port, byte);

unsigned cmd;

unsigned port;

unsigned byte;

/*обратите внимание на различный порядок следования параметров*/

Описание

Функция предназначена для работы с последовательным каналом связи (адаптером RS232). Используется прерывание BIOS номер 0x14.

Значение переменной port, равное 0, соответствует устройству СОМ1, равное 1 — соответствует COM2 и так далее. Всего в компьютере типа IBM PC/XT или /AT может быть до четырех последовательных каналов, но при загрузке автоматически проверяются и инициализируются только первые два из них. Регистры этих каналов начинаются с адреса 0000:0400Н.

Значение параметра cmd может быть одним из следующих:

0 — установить параметры передачи, задаваемые параметром byte;

1 — передать символ, заданный параметром byte, в линию;

2 — принять символ из линии;

3 — получить текущий статус коммуникационного порта. Значение параметра byte представляет собой комбинацию следующих констант:

0x02 7-битный канал
0x03 8-битный канал
0x00 передача с одним стоп-битом
0x04 передача с двумя стоп-битами
0x00 Отсутствие проверки правильности передачи данных
0x08 Проверка по нечетности (odd parity)
0x18 Проверка по нечетности (even parity)
0x00 скорость передачи 110 бод (бит в секунду)
0x20 150 бод
0x40 300 бод
0x60 600 бод
0x80 1200 бод
0хА0 2400 бод
0хС0 4800 бод
0хС0 9600 бод

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

Для всех значений параметра cmd возвращаемое является 16-битным словом, где старшие 8 бит — это биты статуса (состояния), а младшие — возвращаемый байт.

Старшие биты могут принимать следующие значения:

15 Time out (нет ответа в установленный интервал времени);
14 Transmit shift register empty (конец передачи очередного байта);
13 Transmit holding register empty (разрешение загрузки очередного байта для передачи);
12 Break detect (обнаружено прерывание передачи);
11 Framing error (неверный формат принятой посылки);
10 Parity error (ошибка четности);
9 Overrun error (наложение данных);
8 Data ready (готовность данных).

Если значение cmd было равно 1 и бит 15 установлен в 1, значение byte не было передано по каналу.

Если значение cmd было равно 2, считанный байт записан в младших битах возвращаемого слова, если не было ошибок. Ошибкой считается, если хотя бы один бит старшего байта установлен в 1.

Если значение cmd было 0 или 3, старший байт может принимать значения в соответствии с тем, как это было описано выше, а биты младшего байта имеют следующее значение:

7 Received line signal detect (обнаружение несущей);
6 Ring indicator;
5 Data set ready (окончание всех операций);
4 Clear to send (разрешение передачи);
3 Delta receive line signal detector;
2 Trailing edge ring indicator;
1 Delta data set ready;
0 Delta clear to send.

BIOSDISK (TC), _BIOS_DISC (MSC 5.1)

Использование (ТС)

#include <bios.h>

int biosdisk(cmd, drive, head, track, sector, nsect, buffer);

int cmd;

int drive;

int head;

int track;

int sector;

int nsect;

void *buffer;

Использование (MSC 5.1)

#include <bios.h>

int _bios_disk(cmd, diskinfo)

unsigned cmd;

struct diskinfo_t

{

unsigned drive;

unsigned head;

unsigned track;

unsigned sector;

unsigned nsectors;

void far *buffer;

} *diskinfo;

Описание

Эта функция позволяет обратиться к прерыванию BIOS номер 0x13 для работы с диском.

Параметр drive определяет номер диска. Значение 0 соответствует первому дисковому устройству типа накопителя на гибких магнитных дисках, 1 — второму и т.д. Для работы с постоянным жестким ("винчестерским") диском нумерация начинается с 0x80: 0x80 — первый, 0x81 — второй и так далее. Для жестких дисков задается физический номер устройства, а не номер раздела на диске. Прикладные программы сами должны интерпретировать информацию из таблицы разделов (partition), если им это необходимо.

Параметр cmd указывает необходимую операцию. Он может принимать следующие значения:

Для IBM PC, XT или AT, PS/2:

0 Сброс. Все остальные параметры игнорируются.
1 Возвращает статус последней дисковой операции. Все остальные параметры игнорируются.
2 Читает один или более секторов в память. Начальный сектор задается параметрами: head, track и sector. Число секторов задается параметром nsect. Данные читаются по 512 байтов в секторе в buffer.
3 Запись одного или более секторов из памяти. Начальный сектор задается параметрами: head, track и sector. Число секторов задается параметром nsect. Данные записываются по 512 байтов в каждый сектор из buffer.
4 Проверка одного или более секторов. Начальный сектор задается параметрами: head, track и sector. Число секторов задается параметром nsect.
5 Форматирование дорожки. Порожка определяется параметрами head и track. Buffer указывает на таблицу соответствия секторов и головок. Смотрите руководство "Technical Reference Manual" для описания этой таблицы и операции форматирования.

Только для XT, AT, PS/2:

6 Форматирование дорожки и установка флагов для плохих секторов
7 Форматирование начинается с определенной дорожки
8 Получить текущие параметры устройства. Информация возвращается в buffer в первых четырех байтах.
9 Инициализация параметров disk-pair
10 Длинное чтение, при котором читаются 512 байтов + 4 дополнительных байта из сектора
11 Длинная запись, при которой пишутся 512 байтов + 4 дополнительных байта в сектор
12 Позиционирование (disk seek)
13 Альтернативный сброс диска
14 Считать секторный буфер
15 Записать секторный буфер
16 Проверить на готовность указанное устройство
17 Перекалибровка устройства
18 Проверка RAM контроллера
19 Диагностика устройства
20 Внутренняя диагностика контроллера

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

При успешном завершении возвращается значение 0, при ошибке возвращается значение, отличное от 0.

Смотрите руководство "Technical Reference Manual" для подробного описания возможных ошибок.

BIOSEQUIP (ТС), _BIOS_EQUIPLIST (MSC 5.1)

Использование (ТС)

#include <bios.h>

int biosequip(void);

Использование (MSC 5.1)

#include <bios.h>

unsigned _bios_equlplist(void);

Описание

Эта функция возвращает целое значение, описывающее конфигурацию подключенных к компьютеру внешних устройств. Используется прерывание 0x11 BIOS.

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

Биты возвращаемого значения, если они установлены, указывают следующее:

15, 14 — число параллельных принтеров

13 — подключен последовательный принтер

12 — Джойстик (игровой порт в/в)

11-9 — число портов RS232

8 — отсутствие прямого доступа к памяти ПДП (DMA), 1 — когда отсутствует. (Этот бит используется не для всех версий BIOS)

7-6 —количество подключенных дисководов для гибких магнитных дисков:

00 — 1 устройство

01 — 2 устройства

10 — 3 устройства

11 — 4 устройства, только если нулевой бит равен 1

5-4 — видеорежим

01 — 40x25 BW with color card

10 — 80x25 BW with color card

11 — 80x25 BW with mono card

3-2 — размер системного RAM

00 — 16 К

01 — 32 К

10 — 48 К

11 — 64 К

1 — сопроцессор с плавающей точкой

0 — подключен ли хотя бы один жесткий диск (другая версия — признак загрузки с гибкого диска)

BIOSKEY (ТС), _BIOS_KEYBRD (MSC 5.1)

Использование (ТС)

#include <bios.h>

int bioskey(int cmd);

Использование (MSC 5.1)

#include <bios.h>

unsigned _bios_keybrd(unsigned cmd);

Описание

Эта функция позволяет работать с клавиатурой, используя прерывание 0x14 BIOS.

Параметр cmd определяет следующие операции:

0 - вернуть код клавиши, нажатой на клавиатуре.

Если младшие восемь разрядов содержат ненулевое значение, значит, введен ASCII-символ.

Если младшие восемь битов содержат нулевое значение, введен символ из расширенной кодировки, определенной в руководстве "Technical Reference Manual for the IBM PC".

1 — проверить, есть ли символ в буфере ввода (можем ли немедленно считать символ). Если нет, то возвращается ноль.

Если есть готовый символ для ввода, возвращается его код, однако этот символ не изымается из буфера и будет считан при следующем обращении к функции с параметром cmd=0.

2 — опросить текущее состояние клавиш-модификаторов (нажаты или нет). Установленные биты в младшем байте означают:

0x80 включен режим Insert

0x40 включен режим Caps

0x20 включен режим Num Lock

0x10 включен режим Scroll Lock

0x08 нажата клавиша Alt

0x04 нажата клавиша Ctrl

0x02 нажата клавиша Left Shift

0x01 нажата клавиша Right Shift

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

Описано выше.

BIOSMEMORY (ТС), _BIOS_MEMSIZE (MSC 5.1)

Использование (ТС)

# include <bios.h>

int biosmemory(void);

Использование (MSC 5.1)

#include <bios.h>

unsigned _blos_memsize(void);

Описание

Функция использует прерывание 0x12 BIOS, чтобы определить общий объем оперативной памяти в компьютере.

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

Функция возвращает размер ОЗУ в блоках по 1 Кбайту (не учитывается расширенная память (expended и extended)).

Максимальное значение — 640.

BIOSPRINT (ТС), _BIOS_PRINTER (MSC 5.1)

Использование (ТС)

#include <bios.h>

int biosprtnt(cmd, byte, port);

int cmd;

int byte;

int port;

Использование (MSC 5.1)

#include <bios.h>

unsigned _bios_printer(cmd, port, byte);

unsigned cmd;

unsigned port;

unsigned byte;

/*обратите внимание на различный порядок следования аргументов*/

Описание

Функция предназначена для работы с принтером, указанным параметром port. Используется прерывание BIOS 0x17.

Если значение параметра port равно 0, это соответствует устройству LPT1, 1 — LPT2 и т. д.

Параметр cmd может принимать следующие значения:

0 напечатать символ, код которого задается значением byte;

1 инициализация принтера;

2 прочитать статус (состояние) принтера.

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

Если возвращаемое значение для операции cmd=0 не равно 0, это свидетельствует об ошибке вывода символа.

Для всех операций возвращаемое значение - это текущее состояние принтера, которое определяется значениями следующих битов в возвращаемом значении:

0x01 — устройство не готово (time out)

0x08 — ошибка ввода/вывода

0x10 — выбор (selected)

0x20 — обрыв бумаги (out of paper)

0x40 — подтверждение (acknowledge)

0x80 — не занято (not busy)

Детальное описание смотри в руководстве "Technical Reference Manual for the IBM PC".

BIOSTIME (TC), _BIOS_TIMEOFDAY (MSC 5.1)

Использование (ТС)

#include <bios.h>

long biostime(int cmd, long newtime);

Использование (MSC 5.1)

#include <bios.h>

unsigned _bios_timeofday(int cmd, long newtime);

Описание

Эта функция читает или устанавливает таймер BIOS. Используется прерывание BIOS 0x1А. Время определяется в тиках от полуночи. В каждой секунде содержится 18.2 тика.

Если значение cmd равно 0, функция возвращает текущее время в таймере.

Если значение cmd равно 1, устанавливается новое время в таймере.

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

Если cmd=0, возвращается текущее время.

BSEARCH (ТС & MSC & ANSI)

Использование (ТС)

#include <stdlib.h> /*используется только для описания функции*/

void *bsearch(key, base, num, width, compare);

const void *key;

const void *base;

size_t num, width;

int(*compare)(const void *, const void *);

Использование (MSC)

#include <stdlib.h> /*для совместимости с ANSI*/

#include <search.h> /*используется только для описания функции*/

void *bsearch(key, base, num, width, compare);

char *key;

char *base;

size_t num, width;

int (*compare)();

Описание

Функция bsearch выполняет поиск в отсортированном массиве из num элементов, где каждый из элементов массива имеет длину width байтов.

Значение параметра base задает адрес начала массива, в котором будет вестись поиск. Поиск ведется по ключу-значению, которое хранится по адресу, задаваемому значением параметра key.

Параметр compare определяет функцию, которая будет использоваться для определения, удовлетворяет ли текущий элемент массива условию поиска или нет. Подразумевается, что эта функция может сравнивать два элемента массива (на самом деле она сравнивает элемент массива и ключ-значение для поиска) и возвращает значение, определяющее их соотношение.

Функция bsearch будет вызывать функцию, определяемую параметром compare, один или более раз в течение поиска, на каждом шаге выбирая из оставшегося участка массива ту половину, где может располагаться искомый элемент.

Функция *compare должна сравнивать элементы, потом возвращать одно из следующих значений:

<0, если элемент 1 меньше элемента 2

0, если элемент 1 равен элементу 2

>0, если элемент 1 больше элемента 2

Отметим, в частности, что функции strcmp и stricmp удовлетворяют этим требованиям.

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

Указатель на первое месторасположение искомого элемента в массиве. Значение NULL, если элемент не найден.

Смотри также

lfind, lsearch, qsort

CABS (TC & MSC)

#include <math.h>

double cabs(z);

struct complex z;

Описание

Функция cabs вычисляет абсолютное значение комплексного числа.

Комплексное число представляется структурой типа complex, определенной в файле math.h в следующем виде:

struct complex

{

double x,y;

};

Вызов функции cabs эквивалентен вызову функции

sqrt(z.x*z.x+х.у*z.y)

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

Функция cabs возвращает абсолютное значение комплексного числа.

При переполнении возвращается значение HUGE_VAL, переменной errno присваивается значение:

ERANGE — результат вне допустимого диапазона значений.

Смотри также

abs, fabs, labs

CALLOC (ТС & MSC & ANSI)

#include <stdlib.h> /*используется в СП TC, MSC*/

#include <malloc.h> /*используется в СП MSC*/

#include <alloc.h> /*используется в СП TC*/

void *calloc(n, size);

size_t n;

size_t size;

Описание

Библиотека языка Си предоставляет механизм распределения динамической памяти (heap). Этот механизм позволяет динамически (по мере возникновения необходимости) запрашивать из программы дополнительные области оперативной памяти.

В малых моделях памяти (tiny, small, medium) доступно для использования все пространство между концом сегмента статических данных программы и вершиной программного стека, за исключением 256-байтной буферной зоны непосредственно около вершины стека.

В больших моделях памяти (compact, large, huge) все пространство между стеком программы и верхней границей физической памяти доступно для динамического размещения памяти.

Функция calloc распределяет область памяти для массива из n элементов, каждый из которых имеет длину size байтов. Каждый элемент инициализируется нулем.

Имя типа size_t определяется следующим образом: typedef unsigned size_t;

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

Указатель на выделенную область памяти. NULL, если нет доступной памяти.

Смотри также

free, halloc, hfree, malloc, realloc, farcalloc

CEIL (ТС & MSC & ANSI)

#include <math.h>

double ceil(x);

double x;

Описание

Выполняется округление для значения типа double. Функция ceil возвращает наименьшее целое, большее или равное значению числа с плавающей точкой.

Результат представляется в формате double.

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

Число с плавающей точкой.

Смотри также

floor, fmod

CGETS (ТС & MSC)

#include <conio.h> /*используется только для описания функции*/

char *cgets(str);

char *str;

Описание

Функция читает строку символов непосредственно с консоли и помещает строку и ее длину по указателю str. Аргумент str должен быть указателем на массив символов.

Первый элемент массива str[0] должен содержать максимальную допустимую длину считываемой строки. Массив должен иметь достаточную длину, чтобы поместить строку, символ конца строки ('\0') и два байта дополнительно.

Cgets читает символы до тех пор, пока не прочитает символы "возврат каретки" и "перевод строки" (комбинацию (CR-LF)), или пока не будет прочитано установленное число символов.

Прочитанная строка начинается со str[2]. Если прочитана комбинация символов CR-LF, эти символы располагаются за символом конца строки ('\0').

Действительная длина строки помещается в str[1].

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

Указатель на начало строки, т.е. адрес элемента str[2]. Нет кодов ошибок.

Смотри также

getch, getche

CHDIR (ТС & MSC)

#include <dir.h> /*используется в СП ТС*/

#include <direct.h> /*используется в СП MSC*/

int chdir(pathname);

char *pathname;

Описание

Функция изменяет текущий каталог в соответствии с pathname. Параметр pathname должен указывать на существующий каталог.

Функция chdir не позволяет изменить имя устройства, подразумеваемое по умолчанию (если указано имя устройства, то меняется текущий каталог на этом устройстве).

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

0, если текущий каталог успешно изменен или текущим был каталог, который определен в pathname.

1, если установленный в pathname каталог не может быть найден. При этом переменной errno присваивается значение ENOENT.

Смотри также

mkdir, rmdir, system, getcurdir, getcwd

CHMOD (TC & MSC), _CHMOD (TC)

Использование (MSC)

#include <sys\stat.h> /*Содержит описания констант*/

#include <sys\types.h> /*Содержит описания констант*/

#include <io.h> /*Содержит прототип функции*/

int chmod (pathname, pmode);

char *pathname;

int pmode;

Использование (ТС)

#include <sys\stat.h> /*Содержит описания констант*/

#include <io.h> /*Содержит прототипы функций*/

int chmod (pathname, pmode);

char *pathname;

int pmode;

#include <dos.h> /*Содержит описания констант*/

# include <io.h> /*Содержит прототип функции*/

int _chmod(pathname, func[, attrib]);

char *pathname;

int func;

int attrib;

Описание

Функция chmod изменяет права доступа, установленные для файла, который определен в pathname. Различаются права доступа для файла по чтению и записи.

Параметр pmode — константное выражение, содержащее одну или обе константы S_IWRITE и S_IREAD, определенные в файле sys\stat.h. Другие значения для параметра pmode игнорируются. Когда задаются обе константы, они разделяются операцией OR (|). Трактовка значений следующая:

S_IWRITE доступ для записи

S_IREAD доступ для чтения

S_IREAD|S-IWRITE доступ для чтения и записи.

В MS-DOS все файлы доступны для чтения, таким образом значения S_IWRITE и (S_IREAD | S_IWRITE) являются эквивалентными.

Функция _chmod (доступная только в системе программирования ТС) позволяет узнать или установить атрибуты файла в ОС MS-DOS.

Значение параметра func определяет действие: 0 — вернуть текущие атрибуты файла, 1 — установить для файла новые атрибуты по значению параметра attrib.

Параметр attrib — константное выражение, составленное при помощи побитовой операции OR (|) из следующих констант, определенных в файле dos.h:

FA_RDONLY — атрибут доступа только по чтению

FA_HIDDEN — "невидимый" файл

FA_SYSTEM — системный файл

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

Функция pmode возвращает значение:

0 — права доступа успешно изменены;

1 — не может быть найден указанный файл, при этом переменной errno присваивается значение ENOENT.

Функция _pmode возвращает:

при успешном завершении операции — текущие атрибуты файла;

значение -1, если произошла ошибка, при этом переменной errno присваивается одно из значений:

ENOENT — не найден указанный файл,

EACCESS — нарушение прав.

Смотри также

access, creat, fstat, open, stat, unlink

CHSIZE (MSC & TC 2.0)

#include <io.h> /*используется только для описания функции*/

int chsize(handle, size);

int handle;

long size;

Описание

Функция chsize расширяет или сужает файл, имеющий дескриптор handle, до длины, задаваемой параметром size. Файл должен быть доступен для записи.

Если происходит расширение файла, добавляются нулевые символы ('\0').

Если файл сужается, все записи с конца файла обрезаются.

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

Значение 0 — если длина успешно изменена.

Значение — 1 обозначает ошибку, при этом переменной errno одно из следующих значений:

EACCES — указанный файл доступен только для чтения.

В MS-DOS 3.0 и в поздних версиях EACCES может обозначать, что файл закрыт для доступа.

EBADF — недействительный номер handle.

ENOSPC — недостаточно места на устройстве.

Смотри также

close, creat, open

_CLEAR87 (TC & MCS)

#include <float.h>

unsigned int _clear87(void);

Описание

Функция очищает слово состояния сопроцессора с плавающей точкой. Слово состояния является комбинацией слова состояния сопроцессора 8087/80287 и других условий, обнаруженных обработчиком исключительных состояний сопроцессора 8087/80287, такие как переполнение или исчерпание стека чисел с плавающей точкой.

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

Биты в возвращаемом значении соответствуют старому статусу сопроцессора с плавающей точкой.

В файле float.h описаны значения различных битов в значении, возвращаемом функцией _clear87.

Смотри также

_control87, _status87, _fpreset

CLEARERR (TC & MSC & ANSI)

#include <stdio.h>

void clearerr (stream);

FILE *stream;

Описание

Функция clearerr очищает признак ошибки и признак конца файла для указанного потока.

При работе с файлом признак ошибки автоматически не очищается, т.е. если установлен признак ошибки для указанного потока, то при последующих операциях с потоком будет возвращаться признак ошибки до тех пор, пока не будет вызвана функция clearerr или функция rewind (эти функции сбрасывают признак ошибки).

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

Функция не возвращает значения.

Смотри также

eof, feof, ferror, perror, rewind

CLOSE (TC & MSC), _CLOSE (TC)

#include <io.h> /*используется только для описания функции*/

int close(handle);

int handle;

int _close(handle); /*функция _close доступна только в системе программирования ТС*/

int handle;

Описание

Функции close и _close закрывают файл, связанный с дескиптором handle.

Этот файл мог быть открыт с помощью одой из функций: _creat, creat, creatnew, creattemp, dup, dup2, _open, open.

Вызов функции close для файла, открытого в текстовом режиме, вызывает дозапись в конец файла символа <CNTRL/Z>. Чтобы избежать дозаписи этого символа в файл, необходимо воспользоваться для закрытия файла функцией _close.

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

Обе функции возвращают:

значение 0, если файл успешно закрыт.

значение -1, если указано неверное значение параметра handle; переменной errno при этом присваивается значение EBADF.

Смотри также

chsize, creat, dup, dup2, open, unlink, read, write

_CONTROL87 (MSC & TC 2.0)

#include <float.h>

unsigned int _control87 (new, mask);

unsigned int new;

unsigned int mask;

Описание

Функция получает и устанавливает слово управления сопроцессора с плавающей точкой. Слово управления позволяет программе изменить точность, способ округления, способ работы с предельно большими числами в пакете арифметики с плавающей точкой.

Также могут быть замаскированы или размаскированы исключительные ситуации.

Если значение mask равно 0, то функция _control87 используется для получения текущего значения слова управления. Если значение mask ненулевое, то новое значение слова устанавливается следующим образом: для любого бита, который включен (равен 1) в mask, соответствующий бит в new используется, чтобы изменить слово управления. Другими словами, действие этой функции:

fpcntrl=((fpcntrl&~mask)|(new&mask)),

где fpcntrl является словом управления плавающей точки.

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

Биты в возвращаемом значении указывают состояние слова управления для операций с плавающей точкой.

Смотри включаемый файл float.h для получения описания бит в значении, возвращаемом функцией _control87.

Смотри также

_clear87, _status87

CORELEFT(ТС)

Использование (для моделей памяти tiny, small, medium)

#include <alloc.h>

#include <stdlib.h>

unsigned int coreleft(void);

Использование (для моделей памяти compact, large, huge)

#include <alloc.h>

#include <stdlib.h>

unsigned long coreleft(void);

Описание

Функция возвращает приблизительный размер в байтах памяти, доступной для динамического распределения (смотри описание функции malloc).

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

Для моделей памяти tiny, small, medium функция возвращает значение, определяющее объем неиспользуемой оперативной памяти между областью статических данных программы и стеком, возвращаемое значение имеет тип unsigned int.

Для моделей памяти compact, large, huge функция возвращает значение, определяющее объем неиспользуемой оперативной памяти от области динамического распределения памяти (верхней границы программы) до стека, возвращаемое значение имеет тип unsigned long.

Смотри также

calloc, mailoc, realloc, _memavl

COS, COSH (TC & MSC & ANSI)

#include <math.h>

double cos(x);

double cosh(x);

double x;

Описание

Функции cos и cosh возвращают косинус х и гиперболический косинус х соответственно.

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

Функция cos возвращает косинус от х.

Если х большое и происходит потеря значащих разрядов, то функция cos генерирует ошибку PLOSS, но сообщение не печатает.

Если x такое большое, что происходит полная утрата результата, то cos печатает ошибочное сообщение TLOSS в поток sdterr и возвращает 0. В обоих случаях переменной errno присваивается значение ERANGE.

Функция cosh возвращает гиперболический косинус от х.

Если результат является очень большим, то функция cosh возвращает значение HUGE_VAL и присваивает переменной errno значение ERANGE.

Обработку ошибок для функций cos и cosh можно изменить, используя функцию matherr.

Смотри также

acos, asin, atan, atan2, matherr, sin, sinh, tan, tanh

COUNTRY (TC)

#include <dos.h>

struct country *country(countrycode, countryp);

int countrycode;

struct country *countryp;

Описание

Функция возвращает информацию о способе представления времени (дата, время суток и т. д.) и записей о денежных суммах в данной стране.

Работа функции зависит от конкретной версии ОС MS-DOS.

Если параметр countryp имеет значение -1, текущая страна определяется параметром countrycode, значение которого не должно быть равным 0. В противном случае, страна определяется параметром countryp, который указывает на структуру типа country.

Эта структура заполнена информацией, зависящей от страны: либо это текущая страна (если значение параметра countrycode равно 0), либо это страна, заданная параметром countrycode.

Структура country определяется в файле dos.h следующим образом:

struct country

{

int co_date /*Формат даты*/

char co_curr[5]; /*Символ обозначения валютной единицы*/

char co_thsep[2]; /*Символ-разделитель между тысячами*/

char co_desep[2]; /*Десятичный разделитель*/

char co_dtsep[2]; /*Разделитель в дате*/

char co_tmset[2]; /*Разделитель в записи о времени*/

char co_currstyle; /*Стиль записи денежных сумм*/

char co_digits; /*Количество значимых цифр записи денежных сумм*/

int(far *co_case)(); /*Функция, устанавливающая соответствие символов разных регистров*/

char co_dasep; /*Разделитель между данными*/

char co_fill[10]; /*Символ-заполнитель*/

};

Формат даты задается значением параметра co_date:

0 — для стиля даты, месяца и времени США;

1 — европейский стиль;

2 — японский стиль.

Текущий стиль изображения, задается значением параметра со_currstyle:

0 — перед текущим символом численное значение ставится без пробела;

1 — численное значение, следующее за символом, не отделяется от него пробелом;

2 — предшествующее текущему символу численное значение отделено от него пробелом;

3 — численное значение, следующее за символом, отделяется от него пробелом.

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

Возвращается значение указателя countryp.

Переносимость

Только для MS-DOS.

CPRINTF (ТС & MSC)

#include <conto.h> /*используется только для описания функции*/

int cprintf(format[, argument…]);

char *format;

Описание

Функция cprintf форматирует и выводит последовательности символов и значений непосредственно на консольный терминал, используя для вывода символов функцию putch.

Каждый аргумент преобразуется и выводится в том формате, который определен в строке format. Format-строка имеет те же синтаксис и семантику, что и для функции printf (смотри описание функции printf).

В отличие от функций fprintf, printf, sprintf, функция cprintf не переводит символы <LF> в последовательности <CR><LF>.

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

Возвращается количество напечатанных символов.

Смотри также

fprintf, printf, sprintf, vprintf

CPUTS (TC & MSC)

#include <conio.h> /*используется только для описания функции*/

int cputs(str);

char *str;

Описание

Функция cputs записывает строку (адрес которой задает параметр str) вместе с символом конца строки на консольный терминал.

Заметим, что не выводится комбинация символов "возврат каретки"/"перевод строки" (<CR>/<LF>).

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

Для системы программирования ТС версии 1.5 и для системы программирования MSC версии 4.0 функция не возвращает значения.

Для системы программирования ТС версии 2.0 возвращается последний напечатанный символ.

Для системы программирования MSC версии 5.1 возвращается значение:

0 — все нормально

1 — ошибка вывода

Смотри также

putch, fputs, puts

CREAT (ТС & MSC), _CREAT (ТС)

Использование (MSC)

#include <sys\stat.h> /*файл содержит описания констант*/

#include <sys\types.h> /*файл содержит описания констант*/

#include <io.h> /*файл содержит прототип функции*/

int creat(pathname, pmode);

char *pathname;

int pmode;

Использование (ТС)

#include <sys\stat.h> /*файл содержит описания констант*/

#include <io.h> /*файл содержит прототипы функций*/

int creat(pathname, pmode);

char *pathname;

int pmode;

#include <dos.h> /*файл содержит описания констант*/

int _creat(pathname, attrib);

char *pathname;

int attrib;

Описание

Функция creat либо создает новый файл, либо открывает и сужает существующий файл.

Если файл, указанный в pathname, не существует, новый файл создается с заданным доступом и открывается для записи. Если файл уже существует с доступом для записи, creat сужает файл до длины 0, уничтожая предыдущие данные и открывая его для записи.

Если файл существует и доступен только по записи, то функция creat возвращает признак ошибки и файл остается неизмененным.

Права доступа к файлу, установленные в pmode, применимы только к вновь создаваемым файлам. Новый файл получает указанные права доступа после того, как он будет закрыт.

Параметр pmode — константное выражение, содержащее одну или обе константы S_IWRITE и S_IREAD, определенные в файле sys\stat.h. Другие значения для параметра pmode игнорируются. Когда задаются обе константы, они разделяются операцией OR (|). Трактовка значений следующая:

S_IWRITE доступ для записи

S_IREAD доступ для чтения

S_IREAD|S_IWRITE доступ для чтения и записи.

В MS-DOS все файлы доступны для чтения, таким образом значения S_IWRITE и (S_IREAD|S_IWRITE) являются эквивалентными.

Режим открытия файла (текстовый или двоичный) при использовании функции creat определяется по значению глобальной переменной _fmode (ее значением может быть одна из констант, О_ТЕХТ или O_BINARY).

Чтобы открыть файл в другом режиме, можно либо установить соответствующее значение переменной _fmode, либо открыть файл через вызов функции open с установленными атрибутами O_CREAT и O_TRUNC и соответствующим атрибутом O_ТЕХТ или O_BYNARY, например, вызов open ("TMP", O_CREAT|O_TRUNC|O_BINARY, S_IREAD) может быть использован для создания файла в двоичном режиме, доступного только по чтению, с усечением длины файла до 0 байт, если файл уже существует.

Функция _creat выполняет те же действия, что и функция creat, но при этом:

1) файл всегда открывается в двоичном режиме;

2) файл открывается одновременно на чтение и на запись;

3) параметр attrib — константное выражение, составленное при помощи побитовой операции OR (|) из следующих констант, определенных в файле dos.h:

FA_RDONLY — атрибут доступа только по чтению

FA_HIDDEN — "невидимый" файл

FA_SYSTEM — системный файл

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

Функции creat и _creat возвращают значение дескриптора (handle) для созданного файла.

Значение -1 сигнализирует об ошибке, при этом переменной errno присваивается одно из значений:

EACCES pathname указывает на существующий файл с доступом только для чтения или указывает на каталог вместо файла.

EMFILE — нет больше доступных файлов (т.е. слишком много открытых файлов).

ENOENT — файл не найден.

Смотри также

creatnew, creattemp, chmod, chsize, close, dup, dup2, open, sopen, umask

CREATNEW (ТС), CREATTEMP (ТС)

#include <dos.h> /*файл содержит описания констант*/

#include <io.h> /*файл содержит прототипы функций*/

int cratnew(pathname, attrib);

char *pathname;

int attrib;

int creattemp(pathname, attrib);

char *pathname;

int attrib;

Описание

Функция creatnew используется для создания новых файлов (без затирания существующих), функция creattemp используется для создания новых файлов.

Функция creatnew эквивалентна функции _creat с тем отличием, что если файл существует, то функция возвращает признак ошибки и файл остается неизмененным.

Функция creattemp похожа на функцию _creat с тем отличием, что имя файла (имя пути), задаваемое параметром pathname, заканчивается символом обратной косой черты ('\\'). Для указанного каталога выбирается уникальное имя файла. Имя файла дописывается в конец строки, адрес которой передается через параметр pathname (должен быть соответствующий резерв в конце строки). После нормального завершения программы созданный файл автоматически уничтожается.

Соглашения об открытии файла для функций creatnew и creattemp:

1) файл всегда открывается в двоичном режиме;

2) файл открывается на чтение и на запись;

3) параметр attrib — константное выражение, составленное при помощи побитовой операции OR(|) из следующих констант, определенных в файле dos.h:

FA_RDONLY — атрибут доступа только по чтению

FA_HIDDEN — "невидимый" файл

FA_SYSTEM — системный файл

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

Функции creatnew и creattemp возвращают значение дескриптора (handle) для созданного файла.

Значение -1 сигнализирует об ошибке, при этом переменной errno присваивается одно из значений:

EACCES pathname указывает на существующий файл с доступом только для чтения или указывает на каталог вместо файла.

EMFILE — нет больше доступных файлов (т.е. слишком много открытых файлов).

ENOENT — файл не найден.

Смотри также

creat, chmod, chsize, close, dup, dup2, open, sopen, umask, tempnam, tmpnam

CSCANF (TC & MSC)

#include <conio.h>

int cscanf(format[, argument…]);

char *format;

Описание

Функция cscanf читает данные с консоли, выполняет форматные преобразования и помещает значения в переменные, адреса которых определяются аргументами функции.

Функция cscanf использует функцию getche для ввода символов.

Каждый аргумент должен указывать на переменную того типа, который соответствует ее описанию в строке format.

Смотри описание функции scanf.

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

Количество элементов ввода, которые были успешно преобразованы и присвоены.

Значение EOF, если встретился символ-признак конец файла.

Значение 0, если нет присвоенных областей.

Смотри также

fscanf, scanf, sscanf, vscanf, vfscanf

CTIME (TC & MSC & ANSI)

#include <time.h> /*используется только для описания функции*/

char *ctime(time);

const time_t *time;

Описание

Функция ctime преобразует время из длинного целого в строку символов.

Значение time обычно получают, вызывая функцию time, которая возвращает число секунд, прошедших с 1 января 1970 года.

Строка-результат после выполнения ctime содержит 26 символов и имеет вид, показанный на следующем примере:

"Ven Jul 07 05:30:05 1989\n\0".

Каждое поле имеет символьный формат. Символ новой строки ('\n') и нулевой символ ('\0') занимают две последние позиции в строке.

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

Указатель на строку-результат.

Нет кодов ошибок.

Смотри также

acstime, ftime, gmtime, localtime, time

CTRLBRK (TC)

#include <dos.h>

void ctrlbrk(fptr);

int(*fptr)(void);

Описание

Функция ctrlbrk устанавливает новую функцию (определяемую параметром fptr) обработки ситуации, когда пользователь нажимает на клавиатуре комбинацию клавиш control-break.

Используется системный вызов MS-DOS 0x23.

Устанавливаемая функция обработки не вызывается непосредственно. Функция ctrlbrk делает так, что обработчик прерываний DOS вызовет данную функцию.

Обрабатывающая функция может выполнять любое количество операций и системных вызовов.

Обработчик не может возвратить управление в программу через оператор return; он может использовать функцию longjmp для возврата в произвольную точку программы (через эту функцию он может возвращать значение).

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

Функция ctrlbrk не возвращает значения.

Функция-обработчик возвращает 0 для прерывания выполнения текущей программы; любое другое значение вызовет продолжение выполнения программы.

Переносимость

Только для MS-DOS.

Смотри также

longjmp, setjmp

DIEEETOMSBIN, DMSBINTOIEEE (MSC)

#include <math.h>

int dieeetomsbin(src8, dst8);

int dmsbintoieee(src8, dst8);

double *src8, *dst8;

Описание

Функция dieeetomsbin преобразует число двойной точности в IEEE-формате в Microsoft-двоичный формат.

Команда dmsbintoieee преобразует число двойной точности в Microsoft-двоичном формате в IEEE-формат.

Аргумент src8 является указателем на значение типа double, которое будет преобразовываться.

Результат преобразования заносится по адресу, определяемому параметром dst8.

Эти функции позволяют программам на Си (которые хранят вещественные числа в в формате IEEE) использовать числовые данные из файлов, подготовленных программами, созданными с помощью тех версий системы программирования Microsoft BASIC, которые используют для представления вещественных чисел двоичный формат Microsoft.

Эти функции не обрабатывают "специальные" числа IEEE-формата, такие как NAN и бесконечность, такие числа интерпретируются при преобразованиях как значение 0.0.

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

0, если преобразование выполнено успешно.

1, если произошло переполнение.

Смотри также

fieeetomsbin, fmsbintoieee

DIFFTIME (ТС & MSC & ANSI)

#include <time.h>

double difftime(time2, time1);

time_t time2;

time_t time1;

Описание

Функция вычисляет разницу в секундах между временем, задаваемым параметром time2, и временем, задаваемым параметром time1.

Имя типа time_t определяется в файле time.h следующим образом:

typedef long time_t;

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

Число двойной точности, которое является разницей в секундах от time1 до time2.

Смотри также

time

DISABLE (TC), _DISABLE (MSC 5.1)

Использование (MSC)

#include <dos.h>

void disable(void);

Использование (MSC 5.1)

#include <dos.h>

void _disable(void);

Описание

Функция отменяет прерывания.

Допускается только немаскируемое прерывание NMI от любого внешнего устройства.

Вызывается машинная инструкция CLI.

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

Функция не возвращает значения.

Переносимость

Только для архитектуры с микропроцессорами семейства Intel 8086/80286.

Смотри также

enable, getvect

DIV (ТС 2.0 & ANSI)

#include <stdlib.h>

div_t div(number, denom);

int number;

int denom;

Описание

Функция div предназначена для выполнения деления двух чисел типа int, с выделением частного и остатка от деления.

Значения параметров number и denom задают делимое и делитель соответственно.

Тип div_t описан в файле stdlib.h следующим образом:

typedef struct

{

int quot; /*частное*/

int rem; /*остаток от деления*/

} div_t;

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

Возвращается структура из двух элементов (возвращаемое значение — сама структура, а не ее адрес), которые содержат частное и остаток от деления.

Смотри также

ldiv

DOSEXTERR (ТС & MSC)

#include <dos.h>

int dosexterr(buffer);

struct DOSERROR *buffer;

Описание

Функция dosexterr использует прерывание DOS 0x59. Эта функция позволяет получить подробную информацию об ошибке, произошедшей при вызове предыдущей функции DOS.

Функция записывает значения регистров, возвращаемые системным вызовом MS-DOS, в структуру, на которую указывает buffer.

Структура типа DOSERROR определена в dos.h и имеет следующий вид:

struct DOSERROR

{

int exterror; /*значение регистра АХ, признак ошибки*/

char class; /*значение регистра ВН, тип ошибки*/

char action; /*значение регистра BL, действие*/

char locus; /*значение регистра СН*/

}

Для системы программирования MSC, если в качестве аргумента задано значение NULL, функция dosexterr возвращает значение (регистра АХ) без заполнения полей структуры.

Функция работает для версий ОС MS-DOS 3.0 и выше.

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

Значение в регистре АХ (идентичное значению поля exterror). Если возвращается значение 0, значит, во время выполнения предыдущего системного вызова DOS не было ошибки.

Смотри также

perror

DOSTOUNIX (ТС)

#include <dos.h>

long dostounix(dateptr, timeptr);

struct date *dateptr;

struct time *timeptr;

Описание

Функция dostounix преобразует дату и время, возвращаемые функциями getdate и gettime, в формат ОС UNIX.

Параметр dateptr — указатель на структуру date, параметр timeptr — указатель на структуру time, эти структуры содержат информацию о времени и дате, в формате, соответствующем данной версии ОС MS-DOS.

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

Функция dostounix возвращает текущее время в формате ОС UNIX: число секунд со времени 00:00:00 1 января 1970 г. (GMT).

Только для MS-DOS.

Смотри также

ctime, getdate, gettime, unixtodos

DUP, DUP2 (ТС & MSC)

#include <io.h> /*используется только для описания функции*/

int dup(handle);

int handle;

int dup2(handle1, handle2);

int handle1;

int handle2;

Описание

Функции dup и dup2 позволяют связать второй дескриптор (handle) с уже открытым файлом.

В операциях с файлом можно использовать любой handle, так как все handle, связанные с заданным файлом, используют один и тот же (внутренний) указатель файла.

Способ доступа, разрешенный для файла, не меняется при создании нового дескриптора.

Функция dup возвращает еще один дескриптор (handle) для заданного файла.

Функция dup2 принудительно заставляет дескриптор handle2 ссылаться на тот же файл, что и дескриптор handle1. Если handle2 связан с открытым файлом во время вызова функции dup2, то этот файл закрывается.

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

Функция dup возвращает новый дескриптор файла (handle).

Функция dup2 возвращает значение 0, если операция выполнена успешно.

Обе функции возвращают значение -1, если произошла ошибка; и переменной errno присваивается одно из следующих значений:

EBADE недействительный дескриптор handle;

EMFILE нет больше доступных handle (слишком много открытых файлов).

Смотри также

close, creat, open

ECVT (TC & MSC)

#include <stdlib.h> /*используется только для описания функции*/

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

double value;

int ndigits;

int *decptr;

int *signptr;

Описание

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

Функция ecvt записывает ndigits цифр числа value в строку и добавляет в конец строки нулевой байт ('\0').

Если число цифр в value больше, чем ndigits, то отсекаются младшие разряды.

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

В возвращаемой строке помещаются только цифры. Позиция десятичной точки и знак числа записываются в переменные, адреса которых определяются параметрами decptr и signptr.

Параметр decptr указывает на целое, значение которого является позицией десятичной точки от начала строки. Значение 0 или отрицательное число говорит о том, что позиция десятичной точки находится слева от первой цифры.

Параметр signptr является указателем на целое, обозначающее знак числа. Если значение 0, то число положительно. В других случаях число отрицательно.

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

Указатель на строку цифр.

Замечание. Функции ecvt и fcvt используют один и тот же буфер для преобразований. При каждом вызове одной из этих функций результат предыдущего вызова теряется.

Смотри также

atof, atoi, atol, fcvt, gcvt, printf

ENABLE (TC), _ENABLE (MSC 5.1)

Использование (MSC)

#include <dos.h>

void enable(void);

Использование (MSC 5.1)

#include <dos.h>

void _enable(void);

Описание

Функция разрешает прерывания. Допускаются прерывания от всех устройств.

Вызывается машинная инструкция STI.

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

Функция не возвращает значения.

Переносимость

Только для архитектуры с микропроцессорами семейства Intel 8086/80286.

Смотри также

disable, getvect

EOF (TC & MSC)

#include <io.h> /*требуется только для описания функции*/

int eof(handle);

int handle;

Описание

Функция eof определяет — был ли достигнут конец файла, связанного с дескриптором handle.

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

1, если текущая позиция есть конец файла

0, если не конец файла.

-1, неверный дескриптор handle, при этом переменной errno присваивается значение EBADF.

Смотри также

clearerr, feof, ferror, perror, open, read, write

EXEC... (TC & MSC)

#include <process.h> /*требуется только для описания функции*/

int execl(pathname, arg0, arg1, ..., argn, NULL);

int execle(pathname, arg0, arg1, ..., argn, NULL, envp);

int execlp(pathname, arg0, arg1, ..., argn, NULL);

int execlpe(pathname, arg0, arg1, ..., argn, NULL, envp);

int execv(pathname, argv);

int execve(pathname, argv, envp);

int execvp(pathname, argv);

int execvpe(pathname, argv, envp);

char *pathname;

char *arg0, *arg1, ... , argn;

char argv[];

char envp[];

Описание

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

Если вызов прошел успешно, порожденный процесс располагается в памяти на том месте, где раньше располагался вызвавший процесс. Должно быть достаточно оперативной памяти для загрузки и выполнения порожденного процесса.

Аргумент pathname определяет файл, который должен быть выполнен как порожденный процесс. Pathname может определить весь путь (начиная с корня), частичный путь (с текущего каталога) или просто имя файла.

Если pathname не имеет расширения и не заканчивается точкой, то ехес-функция сначала добавляет справа расширение "СОМ" и ищет файл; если файл найти не удается, то добавляется расширение "ЕХЕ". Если в строке, задаваемой аргументом pathname, указано расширение имени файла, то используется только оно. Если pathname заканчивается с точкой, ехес-функция ищет файл без расширения.

Функции execlp и execvp ведут поиск имени файла в каталогах, определенных в PATH-переменных оболочки ОС MS-DOS.

Аргументы передаются новому процессу заданием одного или более указателей на строки символов, как аргументы при вызове ехес-функций.

Эти символьные строки составляют список аргументов для порождаемого процесса.

Суммарная длина строк, формирующая список аргументов для порождаемого процесса, не должна превышать 128 байтов. Нулевые символы ('\0') в конце каждой строки не учитываются, но пробелы (разделяющие аргументы) учитываются.

Аргументы могут быть переданы по отдельности (при вызове функций execl, execle, execlp) или как массив указателей (при вызове функций execv, execve, execvp).

Минимум один аргумент, arg0 или argv[0], должен быть передан в порождаемый процесс. Обычно этот аргумент является копией значения аргумента pathname.

Вызов функций execl, execle, execlp используется обычно в тех случаях, когда число аргументов известно заранее. Аргумент arg0 является обычно указателем на pathname. Аргументы от arg0 до argn являются указателями на символьные строки, составляющие список аргументов. Следующий за argn параметр должен быть указателем NULL, что обозначает конец списка аргументов.

Функции execv, execve, execvp используются обычно в тех случаях, когда число аргументов для нового процесса переменно.

Указатели на аргументы передаются как массив argv, состоящий из указателей. Указатель argv[0] является обычно указателем на pathname. Указатели от argv[1] до argv[n] являются указателями на символьные строки, составляющие список аргументов.

Указатель argv[n+1] должен иметь значение NULL, что обозначает конец списка аргументов.

Файлы, которые открыты на момент вызова какой-либо ехес-функции, остаются открытыми для нового процесса.

При вызове функций execl, execlp, execv и execvp порождаемый процесс унаследует также окружение родителя.

Функции execle и execve позволяют изменить окружение для порождаемого процесса, передав список параметров окружающей среды через аргумент envp. Аргумент envp является массивом символьных указателей, каждый элемент которого является указателем на строку, определяющую переменную из окружения. Такая строка обычно имеет следующую форму:

NAME=value

NAME — имя переменной окружения;

value — строковое значение, в которое переменная устанавливается.

Если значение envp равно NULL, то окружающая среда унаследуется у родителя.

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

Значение -1 сигнализирует об ошибке, при этом переменной errno присваивается одно из следующих значений:

Е2ВIА — список аргументов превышает 128 байтов или память, требуемая для информации об окружающей среде, превышает 32 байта.

EACCES — нарушение прав доступа к файлу.

EMFILE — слишком много открытых файлов (указанный в команде файл открывается, чтобы проверить, можно ли его выполнить).

ENOENT — файл или путь не найдены.

ENOEXEC — указанный файл не является выполняемым или имеет неправильный формат, чтобы его можно было выполнить.

ENOMEM — нет достаточной памяти, чтобы выполнить порождаемый процесс; или доступная память испорчена: существуют блоки неверной длины, что означает, что процесс-родитель был плохо размещен в памяти.

Замечание 1. При вызове ехес не передаются режимы 't' и 'b' (текстовый и двоичный) использования открытых файлов. Если порожденный процесс должен использовать файлы, унаследованные от родителя, то должна быть использована команда setmode, чтобы установить необходимый режим (если этот режим отличен от режима по умолчанию). Установленная реакция на сигналы также не сохраняется, в порожденном процессе происходит установка реакции по умолчанию.

Замечание 2. В ОС MS-DOS версий 3.0 и выше первый передаваемый порождаемому процессу параметр (arg0 или argv[0]) содержит адрес строки, содержащей имя пути для файла, из которого запускается процесс.

Смотри также

abort, exit, _exit, onexit, spawnl, spawnle, spawnlp, spawnlpe, spawnv, spawnve, spawnvp, spawnvpe, system

EXIT (TC & MSC & ANSI), _EXIT (TC & MSC)

#include <process.h>

#include <stdlib.h> /*используйте либо process.h, либо stdlib.h*/

void exit(status);

void _exit(status);

int status; /*статус завершения*/

Описание функции _ЕХIТ

Функции exit и _exit завершают вызванный процесс.

Функция _exit завершает процесс без сбрасывания буферов, связанных с потоками файлов, и без вызова функций завершения.

Значение аргумента status, равное нулю, сигнализирует (по соглашению в рамках операционной системы) о нормальном завершении процесса, значение, отличное от нуля, сигнализирует об ошибке.

Описание функции EXIT (MSC 4.0 & ТС 1.5)

Функция exit скидывает все буфера и закрывает все открытые файлы перед завершением процесса.

Значение аргумента status, равное нулю, сигнализирует (по соглашению в рамках операционной системы) о нормальном завершении процесса, значение, отличное от нуля, сигнализирует об ошибке.

Описание функции EXIT (TC 2.0)

Скидывает все буфера открытых файлов и закрывает их, вызывает функции, зарегистрированные с помощью функции atexit(), затем завершает процесс.

Значение аргумента status, равное нулю, сигнализирует (по соглашению в рамках операционной системы) о нормальном завершении процесса, значение, отличное от нуля, сигнализирует об ошибке. Для задания значения параметра status могут быть использованы константы:

EXIT_SUCCESS — нормальное завершение.

EXIT_FAILURE — аварийное завершение.

Описание функции EXIT (MSC 5.1)

Сначала вызываются функции, зарегистрированные с помощью atexit() и onexit(), затем сбрасываются все буфера открытых файлов и закрываются эти файлы, затем завершается текущий процесс.

Значение аргумента status, равное нулю, сигнализирует (по соглашению в рамках операционной системы) о нормальном завершении процесса, значение, отличное от нуля, сигнализирует об ошибке. Младший байт значения status доступен ожидающему процессу-родителю, если такой есть, после завершения текущего процесса.

Смотри также

abort, execl, execle, execlp, execv, execve, execvp, onexit, spawnl, spawnle, spawnlp, spawnv, spawnve, spawnvp, system.

EXP (TC & MSC & ANSI)

#include <math.h>

double exp(x);

double x;

Описание

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

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

Экспонента от аргумента (ех).

Возвращается значение HUGE_VAL, если произошло переполнение, при этом переменной errno присваивается значение ERANGE.

Возвращается значение 0, если происходит потеря точности, errno не изменяется.

Смотри также

log, log10, frexp, ldexp, matherr, pow, pow10, sqrt

_EXPAND (MSC)

#include <malloc.h> /*используется только для описания функции*/

char *_expand(ptr, size);

char *ptr;

unsigned size;

Описание

Функция _expand изменяет размер блока памяти, ранее выделенного с помощью функции malloc или calloc, не меняя при этом место расположения блока.

Аргумент ptr указывает на начало блока. Аргумент size задает новый размер блока в байтах. Содержимое блока не изменяется.

Аргумент ptr может также указывать на блок, который был освобожден (при помощи функции free), до тех пор, пока не будет сделан вызов одной из функций calloc, _expand, halloc, malloc, или realloc после освобождения блока. Необходимо учесть при этом, что некоторые библиотечные функции, например функция fopen, сами вызывают функцию malloc.

Если ptr указывает на освобожденный блок, то блок будет оставаться освобожденным и после вызова функции _expand.

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

Символьный указатель на переопределенный блок памяти. В отличие от realloc, _expand не может переместить блок при изменении его размера.

NULL, если нет возможности расширить блок до заданных размеров без перемещения блока. Область памяти, на которую указывает возвращаемое значение, является выравненной для размещения объектов любого типа. Новый размер памяти может быть проверен функцией _msize.

Чтобы получить указатель типа, отличного от char, необходимо использовать явное преобразование типа для возвращаемого значения.

Смотри также

calloc, free, halloc, malloc, _msize, realloc

FABS (TC & MSC & ANSI)

#include <math.h>

double fabs(x);

double x;

Описание

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

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

Абсолютное значение аргумента. Нет кодов ошибок.

Смотри также

abs, cabs, labs

FARCALLOC, FARMALLOC, FARCORELEFT, FARFREE, FARREALLOC (TC)

#include <alloc.h>

void far *farcalloc(nunits, unitsz);

unsigned long nunits;

unsigned long unitsz;

void far *farmalloc(size);

unsigned long size;

unsigned long farcoreleft(void);

void farfree(block);

void far *block;

void far *farrealloc(block, newsize);

void far *block;

unsigned long newsize;

Описание

Функции по назначению подобны функциям malloc, calloc, coreleft, free, realloc, но употребляются для динамического размещения памяти в области размера больше 64 Кбайтов. Смотри также описания перечисленных функций.

Отличия far-функций:

— для динамического распределения доступна вся свободная оперативная память;

— могут быть выделены блоки размером более 64 Кбайтов;

— должны быть использованы дальние (far) указатели для доступа к выделенным блокам.

Для моделей памяти compact, large, huge эти функции подобны, хотя и не идентичны, функциям без far-приставок. Отличие в том, что аргументы имеют тип unsigned long, а не unsigned.

В tiny-модели памяти нельзя использовать эти функции, если программа должна быть записана в файл в .СОМ-формате.

Для моделей памяти small и medium блоки, размещенные с помощью функции farmalloc или farcalloc, могут быть освобождены только с помощью функции farfree, размещенные с помощью функции malloc или calloc, могут быть освобождены только с помощью функции free. Для этих моделей памяти создаются две независимые области для динамического размещения памяти.

Замечание. Система программирования MSC предоставляет альтернативный набор функций для динамического распределения памяти из области более 64 Кбайтов:

_fmalloc — получить блок памяти вне данного сегмента;

_ffree — освободить блок, полученный посредством _fmalloc;

_freect — возвращает примерное число областей заданного размера, которые можно получить;

_fmsize — возвращает размер блока памяти, на который указывает далекий (far) указатель;

halloc — получить память для большого массива;

hfree — освободить блок памяти, полученный посредством halloc.

Смотри также

Функции, общие для систем программирования MSC и ТС:

calloc, coreleft, free, malloc

Функции, доступные только в системе программирования MSC:

alloca, _expand, _ffree, _fmalloc, _freect, _fmsize, halloc, hfree, _memavl, _msize, _nfree, _nmalloc, _nmsize, stackavail

FCLOSE (TC & MSC & ANSI), FCLOSEALL (TC & MSC)

#include <stdio.h>

int fclose(stream);

FILE *stream;

int fcloseall();

Описание

Функции fclose и fcloseall закрывают поток или потоки, связанные с открытыми при помощи функции fopen файлами.

Все буфера, связанные с потоками, сбрасываются перед закрытием. Память из-под системных буферов автоматически освобождается при закрытии потока.

Память из-под буферов, размещенных по команде setbuf или setvbuf, автоматически не освобождается.

Функция fclose закрывает поток, определяемый аргументом stream.

Функция fcloseall закрывает все потоки, за исключением следующих:

(ТС 1.5) — stdin, stdout.

(MSC 4.0) — stdin, stdout, stdoux, stdprn.

(ТС 2.0 & MSC 5.1) — stdin, stdout, stdoux, stdprn, stdaux.

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

Функция fclose возвращает значение 0, если поток успешно закрыт.

Функция fcloseall возвращает количество закрытых потоков.

Обе функции возвращают значение EOF, если произошла ошибка.

Смотри также

close, fdopen, fflush, fopen, freopen

FCVT (TC & MSC)

#include <stdlib.h> /*требуется только для описания функции*/

char fcvt(value, ndec, decptr, signptr);

double value;

int ndec;

int *decptr;

int *signptr;

Описание

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

Значение параметра value — число с плавающей точкой, которое должно быть преобразовано.

Функция fcvt помещает цифры числа в строку с завершающим нулевым байтом ('\0'). Значение параметра ndec определяет число цифр после десятичной точки. Если число цифр после десятичной точки в значении value больше ndec, то число округляется, согласно преобразованиям в F-формате вывода оператора WRITE языка программирования FORTRAN-IV. Если меньше, то строка дополняется нулями.

В строке хранятся только цифры. Позиция десятичной точки и знак числа присваиваются переменным, адреса которых задаются параметрами decptr и stgntr, откуда могут быть извлечены после вызова функции fcvt.

Параметр decptr указывает на целое значение, которое является позицией десятичной точки от начала строки. Ноль или отрицательное значение означают, что десятичная точка располагается левее первой цифры в строке. Значение *signtr обозначает знак числа. Нулевое значение означает, что число положительно; отличное от нуля значение означает, что число отрицательно.

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

Указатель на строку цифр.

Нет ошибочных кодов возврата.

Замечание. Функции ecvt и fcvt используют один и тот же буфер для преобразований. При каждом вызове одной из этих команд результаты предыдущего вызова теряются.

Смотри также

atof, atoi, atol, ecvt, gcvt

FDOPEN (TC & MSC)

#include <stdlib.h>

FILE *fdopen(handle, type);

int handle;

char *type;

Описание

Функция fdopen связывает поток ввода/вывода (ввод/вывод верхнего уровня) с файлом, связанным с дескриптором handle (нижний уровень ввода/вывода).

Таким образом, есть возможность для файлов, открытых с помощью библиотечных функций низкоуровневого ввода/вывода (например, при помощи функции open), начать буферизацию и работать с ними через функции форматированного ввода/вывода.

Аргумент type указывает на строку символов, определяющих способ доступа к файлу, и может принимать следующие значения:

"r" Открыть для чтения (файл должен существовать);

"w" Открыть пустой файл для записи; если файл существует, то его содержимое теряется;

"а" Открыть для записи в конец файла (добавления); файл создается, если он не существует;

"r+" Открыть для чтения и записи (файл должен существовать);

"w+" Открыть пустой файл для чтения и записи; если файл существует, ее содержание теряется;

"a+" Открыть для чтения и добавления; файл создается, если он не существует.

Замечание. Будьте осторожны при использовании "w" и "w+", т.к. они могут запортить существующие файлы.

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

Когда файл открыт в режиме "а" или "а+", данные записываются в конец файла. Хотя указатель файла может быть перемещен, используя функции fseek или rewind, он всегда будет перемещаться обратно на конец файла при записи данных. Таким образом, существующие данные не могут быть затерты.

Когда определен один из режимов "r+","w+" или "а+", разрешено чтение и запись (т.е. файл открыт для изменения ("update")). Однако при переключении с чтения на запись и наоборот должно осуществляться "ручное" позиционирование указателя по файлу с помощью функций fseek, rewind, fsetpos.

Для того чтобы указать, что файл должен быть открыт в текстовом режиме, необходимо добавить символ 't' в строку type, если в двоичном — 'b'.

В текстовом режиме последовательности символов <CR><LF> преобразуются в символ <LF> при вводе. Символы <LF> преобразуются в последовательности символов <CR><LF> при выводе. Кроме того, <CTRL/Z> интерпретируется как символ конца файла при вводе. Для файлов, открываемых на чтение или чтение/запись, по возможности происходит проверка и удаление символов <CTRL/Z> (это необходимо для корректной работы fseek).

В двоичном режиме перечисленные выше преобразования не производятся.

Если не указан ни символ 'b', ни символ 't', принимается режим, задаваемый по умолчанию глобальной переменной _fmode.

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

Указатель на открытый поток.

Значение NULL, если обнаружена ошибка.

Смотри также

dup, dup2, fclose, fcloseall, fopen, freopen, open.

FEOF (TC & MSC & ANSI)

#include <stdio.h>

int feof(stream);

FILE *stream; /*Указатель на структуру FILE*/

Описание

Функция определяет, достигнут ли конец данного потока.

Если конец потока (т.е. соответствующего потоку файла) достигнут, операция чтения будет возвращать символ конца файла (значение EOF) до тех пор, пока поток не будет закрыт или не будет вызвана функция rewind.

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

Ненулевое значение, если достигнут конец файла (это будет обнаружено после первого обращения к операции чтения, которой не хватило данных в файле).

Нулевое значение, если не конец файла.

Замечание. feof выполняется как макрокоманда.

Смотри также

clearerr, eof, ferror, perror.

FERROR (TC & MSC & ANSI)

#include <stdio.h>

int ferror(stream);

FILE *stream;

Описание

Функция осуществляет проверку наличия ошибки при чтении/записи данных для заданного потока.

Если имела место ошибка, то (внутренний) индикатор ошибки для потока остается установленным до тех пор, пока поток не будет закрыт или не будет вызвана функция rewind или clearerr, соответственно, на протяжении этого периода времени обращение к функции feof будет оканчиваться возвратом признака ошибки ввода/вывода.

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

0, если нет ошибок.

Ненулевое значение, если встретилась ошибка для заданного потока.

Замечание. ferror выполняется как макрокоманда.

Смотри также

clearerr, eof, feof, fopen, perror.

FFLUSH (TC & MSC & ANSI)

#include <stdio.h>

int fflush(stream);

FILE *stream;

Описание

Функция сбрасывает содержимое, буфера, связанного с потоком stream, в файл, связанный с этим потоком. Поток остается открытым. Если поток не буферизован, то вызов функции fflush не влечет никаких действий.

Если файл открыт на чтение, содержимое буфера очищается.

Функция fflush отменяет действие функции ungetc, вызванной непосредственно перед ней.

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

0, если буфер успешно сброшен.

Значение 0 возвращается и в тех случаях, когда поток не буферизован или открыт только для чтения.

Значение EOF сигнализирует об ошибке.

Замечание. Буфер потока автоматически скидывается, когда он заполняется, когда закрывается поток или когда программа завершилась нормально без закрытия потока.

Смотри также

fclose, flushall, setbuf

_FFREE (MSC)

#include <malloc.h> /*используется только для описания функции*/

void _ffree(ptr);

char far *ptr;

Описание

Функция освобождает блок памяти, который располагается вне данного сегмента.

Аргумент ptr указывает на блок памяти, динамически выделенный ранее через обращение к функции _fmalloc. Число освобождаемых байтов равняется тому числу, которое было определено при выделении блока. После вызова функции _ffree освобожденный блок снова доступен для распределения.

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

Функция не возвращает значения.

Смотри также

fmalloc, free, malloc, farmalloc

Замечание. Попытка освободить неверный блок (для которого адрес (ptr-указатель) не был получен посредством вызова функции _fmalloc) может нарушить последующее выделение памяти и привести к ошибке.

FGETC (ТС & MSC & ANSI), FGETCHAR (ТС & MSC)

#include <stdio.h>

int fgetc(stream);

FILE *stream;

int fgetchar(void);

Описание

Функция fgetc читает один символ из вводного потока stream с текущей позиции и перемещает (внутренний) указатель файла на следующий символ.

Вызов функции fgetchar() эквивалентен вызову fgetc(stdin).

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

Введенный символ.

Значение EOF, если конец файла или ошибка; чтобы отличить конец файла от ошибки, необходимо воспользоваться функцией feof или ferror.

Замечание. Вызовы fgetc и fgetchar являются идентичными вызовам getc и getchar, но являются вызовами функций, а не макроопределений.

Смотри также

fputc, fputchar, getc, getchar

FGETS (ТС & MSC & ANSI)

#include <stdio.h>

char *fgets(string, n, stream);

char *string;

int n;

FILE *stream;

Описание

Функция читает строку из входного потока stream и помещает ее в строку, адрес которой задается значением параметра string. Символы читаются из потока до тех пор, пока не будет прочитан символ новой строки ('\n'), который включается в строку, или пока не наступит конец потока, или пока не будет прочитано (n-1) символов. Результат помещается в string и заканчивается нулевым символом ('\0'). Если n равно 1, то формируется пустая строка.

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

Возвращается адрес строки;

значение NULL, если произошла ошибка или достигнут конец файла, эти ситуации можно различить, используя функции feof и ferror.

Смотри также

fputs, gets, puts

FIEEETOMSBIN, FMSBINTOIEEE (MSC)

#include <math.h>

int fieeetomsbln(src4, dst4);

int fmsbintoieee(src4, dst4);

float *src4, *dst4;

Описание

Функция fieeetomsbin преобразует число с плавающей точкой из IEEE-формата в Microsoft-двоичный формат.

Функция fmsbintoieee преобразует число с плавающей точкой из Microsoft-двоичного формата в IEEE-формат.

Эти функции позволяют Си-программам (которые хранят число с плавающей точкой в IEEE формате) использовать числовые данные из файлов, созданных с помощью программ, разработанных в системе программирования Microsoft BASIC (которые хранят числа с плавающей точкой в Microsoft-двоичном формате), и наоборот.

Аргумент src4 указывает на значение типа float, которое будет преобразовываться. Результат помещается по адресу, задаваемому dst4.

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

0, если преобразование выполнено успешно.

1, если произошло переполнение.

Смотри также

dieeetomsbin, dmsbintoieee

FILELENGTH (ТС & MSC)

#include <io.h>

long filelength(handle);

int handle;

Описание

Функция возвращает длину в байтах файла, связанного с заданным дескриптором handle.

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

Длина файла в байтах.

Значение -1L, если обнаружена ошибка, при этом переменной errno присваивается значение EBADF, что означает неверное значение handle.

Смотри также

chsize, fileno, fstat, stat

FILENO (ТС & MSC)

#include <stdio.h>

int fileno(stream);

FILE *stream;

Описание

Функция возвращает значение дескриптора handle (используемого функциями ввода/вывода нижнего уровня), связанного с заданным указателем потока stream (используемым функциями ввода/вывода верхнего уровня).

Если несколько дескрипторов связаны с потоком, то функция возвращает значение того из них, который был открыт первым.

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

Дескриптор файла. Нет ошибочных кодов возврата.

Результат не определен, если указано неверное значение параметра stream (stream не является указателем потока).

Замечание. Вызов fileno выполняется как макрос.

Смотри также

fdopen, filelength, fopen, freopen

FINDFIRST (ТС), _DOS_FINDFIRST (MSC 5.1)

Использование (ТС)

#include <dir.h>

#include <dos.h>

int findfirst(pathname, buffer, attrlb);

char *pathname;

struct ffblk *buffer;

int attrib;

struct ffblk

{

char ff_reserved[21]; /*зарезервировано DOS*/

char ff_attrib; /*найденный атрибут*/

int ff_ftime; /*время*/

int ff_fdate; /*дата*/

long ff_fsize; /*размер*/

char ff_name[13]; /*найденное имя*/

}

Использование (MSC 5.1)

#include <dos.h> /*обратите внимание на различный порядок следования аргументов*/

unsigned _dos_findfirst(pathname, attrib, buffer);

char *pathname;

unsigned attrib;

struct find_t *buffer;

struct find_t

{

char reserved[21]; /*зарезервировано DOS*/

char attrib; /*найденный атрибут*/

int wr_time; /*время*/

int wr_date; /*дата*/

long size; /*размер*/

char name[13]; /*найденное имя (без пути)*/

}

Описание

Функция начинает поиск файла или каталога на диске (функция находит первый файл, удовлетворяющий заданным условиям, другие файлы, удовлетворяющие тем же условиям, могут быть найдены при помощи функции findnext).

Используется системный вызов MS-DOS 0x4E.

Аргумент pathname — адрес строки, содержащей необязательный спецификатор устройства и полное имя искомого файла (включающее имя пути). Имя файла может содержать регулярное выражение (символы '?' или '*' с тем же значением, что и в командной строке ОС MS-DOS). Когда заданный файл найден, происходит заполнение структуры, адрес которой задается параметром buffer, информацией о каталоге.

Параметр attrib — байт атрибутов файла MS-DOS, используемый при выборе допустимых файлов в поиске.

Параметр attrib может принимать одно из следующих значений, определенных в dos.h:

ТС MSC 5.1  
A_NORMAL   Обычный файл (чтение/запись)
FA_RDONLY _A_RDONLY Только чтение
FA_HIDDEN _A_HIDDEN Скрытый файл
FA_SYSTEM _A_SYSTEM Системный
FA_LABEL _A_VOLID Метка тома
FA_DIREC _A_SUBDIR Каталог
FA_ARCH _A_ARCH Архив

Структура, заполняемая при вызове функции, содержит информацию, необходимую для продолжения поиска. На каждый последующий вызов функции findnext будет возвращаться новое имя файла до тех пор, пока не возникнет такая ситуация, что не останется более ни одного файла, имя которого подходило бы под заданное регулярное выражение.

Функция устанавливает значение регистра DTA (disk-transfer address) для адресации структуры, в которой хранится информация о файле. Если потребуется изменить значение DTA, необходимо его сохранить, а затем восстановить, чтобы обеспечить возможность продолжения поиска.

Сохранение и восстановление производится с помощью функций getdta и setdta.

Примечание. Поиск производится только в пределах каталога. Для организации обхода дерева каталогов надо самостоятельно написать алгоритм, который перебирал бы по очереди все каталоги (найдя их при помощи функций findfirst и findnext) и в каждом инициировал бы независимый поиск новым вызовом функции findfirst.

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

Возвращается значение 0 при успешном поиске.

Если файл не найден или в имени файла встретилась какая-либо ошибка, возвращается значение -1, и глобальной переменной errno присиаивается одно из значений:

ENOENT — Имя не найдено

ENMFILE — Файлов нет (только для системы программирования ТС)

Переносимость

Только для MS-DOS.

FINDNEXT (TC), _DOS_FINDNEXT (MSC 5.1)

Использование (ТС)

#include <dir.h>

#include <dos.h>

int findnext(struct ffblk *buffer);

Использование (MSC 5.1)

#include <dos.h>

unsigned _dos_findnext(struct find_t *buffer);

Описание

Изучите сначала описание функции findfirst (_dos_findfirst).

Функция findnext (_dos_findnext) используется для поиска следующего файла, имя которого подходит под регулярное выражение, заданное как аргумент для последнего вызова функции findfirst (_dos_findfirst).

Используется системный вызов 0x4F.

Структура, заполняемая при вызове функции, содержит информацию, необходимую для продолжения поиска. На каждый последующий вызов функции findnext будет возвращаться новое имя файла до тех пор, пока не возникнет такая ситуация, что не останется более ни одного файла, имя которого подходило бы под заданное регулярное выражение.

Функция устанавливает значение регистра DTA (disk-transfer address) для адресации структуры, в которой хранится информация о файле. Если потребуется изменить значение DTA, необходимо его сохранить, а затем восстановить, чтобы обеспечить возможность продолжения поиска.

Сохранение и восстановление производится с помощью функций getdta и setdta.

Примечание. Поиск производится только в пределах каталога. Для организации обхода дерева каталогов надо самостоятельно написать алгоритм, который перебирал бы по очереди все каталоги (найдя их при помощи функции findfirst и findnext) и в каждом инициировал бы независимый поиск новым вызовом функции findfirst.

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

Возвращается значение 0 при успешном поиске.

Если файл не найден или в имени файла встретилась какая-либо ошибка, возвращается значение -1, и глобальной переменной errno присваивается одно из значений:

ENOENT — Имя не найдено

ENMFILE — Файлов нет (только для системы программирования ТС)

Переносимость

Только для MS-DOS.

FLOOR (ТС & MSC & ANSI)

#include <math.h>

double floor(x);

double x;

Описание

Функция возвращает значение с плавающей точкой, которое представляет наибольшее целое, меньшее или равное x.

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

Число с плавающей точкой.

Нет ошибочных кодов возврата.

Смотри также

ceil, fmod

FLUSHALL (ТС & MSC)

#include <stdio.h> /*используется только для описания функции*/

int flushall();

Описание

Функция записывает содержимое всех буферов, связанных с открытыми выводными потоками, в файлы, связанные с этими потоками. Все потоки остаются открытыми после flushall.

Функция обнуляет также все буфера, связанные с файлами, открытыми на чтение. Для буферизованных потоков вызов функции flushall отменяет действие функции ungetc, вызванной непосредственно перед этим.

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

Количество открытых потоков (вводных и выводных).

Нет ошибочных кодов возврата.

Замечание. Буфер потока автоматически скидывается, когда он заполняется, когда закрывается поток или когда программа завершилась нормально без закрытия потока.

Смотри также

fflush

_FMALLOC (MSC)

#include <malloc.h> /*используется только для описания функции*/

char far *_fmalloc(size);

unsigned size;

Описание

Функция используется для динамического выделения блока оперативной памяти как минимум size байтов вне заданного сегмента. (Размер блока может быть больше size байтов в результате выравнивания.)

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

Далекий (far) указатель на char. Область памяти, на которую указывает возвращаемое значение, является выровненной для объектов любого типа. Для получения указателя типа, отличного от char, необходимо использовать операцию явного преобразования типа. Если нет достаточной памяти вне текущего сегмента, будет попытка получить память, используя текущий сегмент. Если и в этом случае памяти окажется недостаточно, будет возвращено значение NULL.

Смотри также

_ffree, _fmsize, malloc, realloc, farmalloc

FMOD (TC & MSC & ANSI)

#include <math.h> /*используется только для описания функции*/

double fmod(x, y);

double x;

double y;

Описание

Функция вычисляет остаток от деления х на у, такой, что x=iy+f, где i — целое, f имеет такой же знак, как х, и абсолютное значение х меньше абсолютного значения у.

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

Остаток в виде числа с плавающей точкой.

Значение 0.0, если у имеет нулевое значение или деление х на у приводит к переполнению.

Смотри также

ceil, fabs, floor

_FMSIZE (MSC)

#include <malloc.h> /*используется только для описания функции*/

unsigned _fmsize(ptr);

char far *ptr;

Описание

Функция возвращает размер в байтах блока памяти, выделенного по вызову функции _fmalloc.

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

Размер в байтах, как беззнаковое целое.

Смотри также

_ffree, _fmalloc, malloc, _msize, _nfree, _nmalloc, _nmsize

FNMERGE (TC)

#include <dir.h>

void fnmergef path, drive, dir, name, ext);

char *path;

char *drive;

char *dir;

char *name;

char *ext;

Описание

Функция fnmerge создает полное имя файла из отдельных компонент: формируется строка "X:\DIR\SUBDIR\NAME.EXT" и записывается по адресу, задаваемому аргументом path, при этом составляющие части определяются следующим образом:

"X:" задается аргументом drive;

"\DIR\SUBDIR\" — задается аргументом dir;

"NAME.EXT" — задается аргументами name и ext.

Функция fnmerge полагает, что path содержит адрес буфера, в котором зарезервировано достаточно места для полного имени файла. Максимальная длина полного имени определяется константой МАХРАТН, заданной в файле dir.h.

Строка drive включает в себя двоеточие ("С:", "А:" и т.д.).

Строка dir содержит начальный и заключительный символ '\\' (например, "\turboc\include\", "\source\" и т.д.).

Строка ext содержит точку, предшествующую расширению (".с", ".ехе" и т.д.).

Функции fnmerge и fnsplit взаимно дополняют друг друга: если вы разбили данное полное имя path с помощью fnsplit, объединение полученных компонент с помощью fnmerge снова даст path.

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

Функция fnmerge не возвращает значения.

Переносимость

Только для MS-DOS.

FNSPLIT (TC)

#include <dir.h>

int fnsplit(path, drive, dir, name, ext);

char *path;

char *drive;

char *dir;

char *name;

char *ext;

Описание

Функция fnsplit разбивает полное имя файла (задаваемое аргументом path), представляемое строкой вида "X:\DIR\SUBDIR\NAME.EXT", на 4 компоненты.

Затем они помещаются в строки, адреса которых задаются аргументами drive, dir, name, ext. Каждая компонента обязательна, но может быть NULL-ссылкой.

Максимальные размеры этих строк представлены константами MAXDRIVE, MAXDIR, МАХРАТН, MAXNAME, МАХЕХТ, описанными в файле dir.h, и каждый размер учитывает запас конечного, нулевого байта ('\0'). Значения констант задаются следующие:

Константа Максимальный размер Строка
МАХРАТН 80 path
MAXDRIVE 3 drive, включая двоеточие (:)
MAXDIR 66 dir, включая начальную и последнюю (\)
MAXFILE 9 name
MAXEXT 5 ext, включая начальную точку (.)

Функция fnsplit полагает, что достаточно места для хранения каждой ненулевой компоненты.

При разбитии полного имени path на части функция fnsplit трактует знаки пунктуации следующим образом:

Строка drive включает в себя двоеточие ("С:", "А:" и т.д.).

Строка dir содержит начальный и заключительный символ '\\' (например,"\turboc\include\", "\source\" и т.д.).

Строка ext содержит точку, предшествующую расширению (".с", ".ехе" и т. д.).

Функции fnmerge и fnsplit взаимно дополняют друг друга: если вы разбили данное полное имя path с помощью fnsplit, объединение полученных компонент с помощью fnmerge снова даст path.

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

Функция fnsplit возвращает целое значение, составленное из 5 флагов, определенных в dir.h, показывающее, какие компоненты полного имени были представлены в path. Флаги и представляемые ими компоненты:

EXTENSION расширение

FILENAME имя файла

DIRECTORY каталог (и, возможно, подкаталоги)

DRIVE спецификация устройства (см. dir.h)

WILDCARD регулярное выражение (символы ? и *)

Переносимость

Только для MS-DOS.

FOPEN (ТС & MSC & ANSI)

#include <stdio.h>

FILE *fopen(pathname, type);

char *pathname;

char *type;

Описание

Функция открывает файл, имя которого задается аргументом pathname, и связывает с ним поток (для выполнения высокоуровневого ввода/вывода).

Аргумент type указывает на строку символов, определяющих способ доступа к файлу, и может принимать следующие значения:

"r" Открыть для чтения (файл должен существовать);

"w" Открыть пустой файл для записи; если файл существует, то его содержимое теряется;

"а" Открыть для записи в конец файла (добавления); файл создается, если он не существует;

"r+" Открыть для чтения и записи (файл должен существовать) ;

"w+" Открыть пустой файл для чтения и записи; если файл существует, его содержание теряется;

"а+" Открыть для чтения и добавления; файл создается, если он не существует.

Замечание. Будьте осторожны при использовании "w" и "w+", т.к. они могут запортить существующие файлы.

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

Когда файл открыт в режиме "а" или "а+", данные записываются в конец файла. Хотя указатель файла может быть перемещен, используя функции fseek или rewind, он всегда будет перемещаться обратно на конец файла при записи данных. Таким образом, существующие данные не могут быть затерты.

Когда определен один из режимов "r+","w+" или "a+", разрешено чтение и запись (т.е. файл открыт для изменения ("update")). Однако при переключении с чтения на запись и наоборот должно осуществляться "ручное" позиционирование указателя по файлу с помощью функций fseek, rewind, fsetpos.

Для того чтобы указать, что файл должен быть открыт в текстовом режиме, необходимо добавить символ 't' в строку type, если в двоичном — 'b'.

В текстовом режиме последовательности символов <CR><LF> преобразуются при чтении в символ <LF>. Символы <LF> преобразуются в последовательности символов <CR><LF> при выводе. Кроме того, <CTRL/Z> интерпретируется как символ конца файла при вводе. Для файлов, открываемых на чтение или чтение/запись, по возможности происходит проверка и удаление символов <CTRL/Z> (это необходимо для корректной работы функции fseek).

В двоичном режиме перечисленные выше преобразования не производятся.

Если не указан ни символ 'b', ни символ 't', принимается режим, задаваемый по умолчанию глобальной переменной _fmode.

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

Указатель на открытый поток.

Значение NULL, если обнаружена ошибка.

Смотри также

fclose, fcloseall, fdopen, ferror, fileno, freopen, open, setmode

_FPRESET (TC & MSC)

#include <float.h>

void _fpreset();

Описание

Функция инициализирует пакет функций арифметики с плавающей точкой.

Эта функция обычно используется вместе с функциями signal, system или ехес... и spawn...

Если программа устанавливает реакцию на сигналы об ошибках вычисления функций выполнения операций с плавающей точкой (SIGFPE) с помощью функции signal, то эти сигналы можно обработать с помощью _fpreset и вернуться из подпрограммы обработки посредством функции longjmp.

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

Функция не возвращает значения.

Смотри также

execl, execle, execlp, execlpe, execv, execve, execvp, execvpe, signal, spawnl, spawnle, spawnlp, spawnlpe, spawnv, spawnve, spawnvp, spawnvpe

FPRINTF (TC & MSC & ANSI)

#include <stdio.h>

int fprintf(stream, format_string[, argument...]);

FILE *stream;

char format_string;

Описание

Функция выполняет форматные преобразования для данных, предназначенных для вывода, и печатает последовательности символов и значений в выводной поток stream.

Каждый аргумент argument (если их несколько) преобразуется и выводится согласно формату преобразования, определяемому в строке, задаваемой аргументом format_string.

Строка format_string имеет определенный вид, и существуют соглашения об обозначении формата различных элементов вывода. Эти соглашения те же, что и для функции printf.

Смотрите описание функции printf.

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

Количество выведенных символов (завершающий нулевой символ не учитывается).

(Только для системы программирования ТС) — при ошибке возвращается значение EOF.

Смотри также

cprintf, fscanf, printf, sprintf, fwrite

FPUTC (TC & MSC & ANSI), FPUTCHAR (TC & MSC)

#include <stdio.h>

int fputc(c, stream);

int c;

FILE *stream;

int fputchar(с);

int c;

Описание

Функция fputc записывает одиночный символ с в поток stream в текущую позицию. Вызов fputchar(c) эквивалентен вызову fputc(c, stdout).

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

Записанный символ.

Значение EOF, если встретился конец файла или ошибка, эти ситуации можно различить, используя функцию feof или ferror.

Смотри также

fgetc, fgetchar, putc, putchar

FPUTS (TC & MSC & ANSI)

#include <stdio.h>

int fputs(string, stream);

char *string;

FILE *stream;

Описание

Функция копирует строку string в поток stream, с текущей позиции. Завершающий нулевой символ ('\0') не копируется.

Возвращаемое значение (ТС & MSC 4.0)

Последний записанный символ.

Значение 0, если строка string пустая;

значение EOF, если произошла ошибка.

Возвращаемое значение (MSC 5.1)

Возвращается значение 0, если все в порядке;

при неудаче возвращает ненулевое значение.

Смотри также

fgets, gets, puts

FP_OFF, FP_SEG (TC & MSC)

#include <dos.h>

unsigned FP_OFF(longptr);

unsigned FP_SEG(longptr);

char far *longptr;

Описание

FP_OFF и FP_SEG — макросы — возвращают смещение и адрес сегмента указателя longptr соответственно.

В моделях памяти small и medium эти макросы работают только в том случае, если указатель far указывает по сегменту данных, используемому по умолчанию.

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

Функция FP_OFF возвращает беззнаковое целое, представляющее собой смещение внутри сегмента.

Функция FP_SEG возвращает беззнаковое целое, представляющее собой адрес сегмента.

Смотри также

segread

FREAD (ТС & MSC & ANSI)

#include <stdio.h>

int fread(buffer, size, count, stream);

void *buffer;

size_t size;

size_t count;

FILE *stream;

Описание

Функция читает count элементов длины size из входного потока stream и помещает их в заданный массив buffer. Указатель файла, связанный с потоком stream, увеличивается на число действительно прочитанных байтов.

Форматных преобразований данных (как для функции fscanf) не производится. Символы перевода строки ('\n') специально (как для функции fgets) не обрабатываются.

Для работы с файлом, содержащим двоичную информацию, Файл необходимо открыть в двоичном режиме (смотри описание функции fopen).

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

Количество действительно прочитанных элементов, которое может быть меньше, чем count, если встретилась ошибка или конец файла раньше, чем было прочитано count элементов.

Смотри также

fwrite, read

FREE (TC & MSC & ANSI)

#include <stdlib.h> /*используется в СП ТС, MSC*/

#include <malloc.h> /*используется в СП MSC*/

#include <alloc.h> /*используется в СП ТС*/

void free (ptr);

void *ptr;

Описание

Функция освобождает блок памяти, аргумент ptr указывает на блох памяти, который был ранее получен по вызову функции calloc, malloc или realloc.

Число освобождающихся байтов — это число байтов, которые были выделены при получении блока памяти. После вызова освободившаяся область памяти снова может быть выделена по запросу.

(Для системы программирования MSC 5.1) — NULL-аргумент игнорируется.

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

Нет кодов возврата.

Замечание. Если для free задано неправильное значение ptr (значение указателя, которое не было получено посредством вызова функции calloc, malloc, realloc), это может привести к труднолокализуемым ошибкам.

Смотри также

calloc, malloc, realloc, hfree, _ffree, _nfree, farfree

_FREECT (MSC)

#include <malloc.h> /*используется только для описания функции*/

unsigned int _freect(stze);

size_t size;

Описание

Функция позволяет определить, сколько памяти доступно для динамического выделения, возвращается приблизительное число — сколько раз можно вызвать malloc для выделения области памяти заданного размера в сегменте данных, к которому происходит обращение по умолчанию.

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

Число возможных обращений как беззнаковое целое.

Смотри также

calloc, _expand, malloc, _memavl, _msize, realloc, coreleft

FREEMEM (TC), _DOS_FREEMEM (MSC 5.1)

Использование (ТС)

#include <dos.h>

int freemem(unsigned seg);

Использование (MSC 5.1)

#include <dos.h>

unsigned _dos_freemem(unsigned seg);

Описание

Функция freemem освобождает блок памяти, выделенный предыдущим вызовом allocmem. Аргумент seg — это адрес сегмента данного блока. Освобожденная память больше недоступна прикладным процессам.

Используется системный вызов MS-DOS 0x49.

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

Функция freemem в случае нормального завершения возвращает значение 0.

В случае ошибки возвращается значение -1, а переменной errno присваивается значение ENOMEM.

Причиной ошибки может быть обращение с адресом сегмента, не полученным через allocmem или setblock, а также разрушение заголовка одной из областей.

Переносимость

Только для MS-DOS.

Смотри также

coreleft, allocmem, malloc, setblock, biosmem

FREOPEN (TC & MSC & ANSI)

#include <stdio.h>

FILE *freopen(pathname, type, stream);

char *pathname;

char *type;

FILE *stream;

Описание

Функция закрывает файл, связанный в текущий момент с потоком stream, и переназначает поток stream на файл, определенный в pathname.

Функция freopen обычно используется, чтобы связать потоки stdin, stdout, stderr, stdaux и stdprn с файлами, задаваемыми пользователем.

Новый файл, связанный с потоком stream, открывается с типом доступа, определяемым tуре, см. описание функции fopen.

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

Указатель потока для нового открытого файла.

Значение NULL, если встретилась ошибка; при этом первоначально открытый (связанный с потоком stream) файл закрывается.

Смотри также

fclose, fcoseall, fdopen, fileno, fopen, open, setmode

FREXP (TC & MSC & ANSI)

#include <math.h>

double frexp(x, expptr);

double x;

int *expptr;

Описание

Функция разбивает число с плавающей точкой, задаваемое параметром х, на мантиссу m и экспоненту n таким образом, что абсолютное значение m больше или равно 0.5 и n меньше 1.0 и х=m*2. Целочисленное значение экспоненты n присваивается переменной, адрес которой задается параметром expptr.

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

Значение мантиссы m.

Значение 0.0 для мантиссы (при этом экспонента равна 0), если значение параметра х равно 0.

Нет ошибочных кодов возврата.

Смотри также

ldexp, modf

FSCANF (ТС & MSC & ANSI)

#include <stdio.h>

int fscanf (stream, format_strtng[, argument...]);

FILE *stream;

char *format_string;

Описание

Функция читает данные из указанного входного потока stream, выполняет форматные преобразования и полученные значения записывает в переменные, адреса которых задаются параметрами argument...

Каждый из параметров argument должен быть указателем на переменную типа, соответствующего типу, заданному очередным элементом описания поля формата (такие элементы начинаются с символа '%') в строке, адрес которой задается аргументом format_string.

Format_string определяет тип вводимых значений и имеет тот же вид, что и для функции scanf; смотри описание format_string в описании функции scanf.

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

Количество успешно введенных, преобразованных и присвоенных элементов ввода. При этом не учитываются элементы, которые были успешно введены, но не присвоены.

Возвращается значение FOF, если уже достигнут конец файла.

Возвращается значение 0, если нет элементов, которые были бы присвоены.

Смотри также

cscanf, fprintf, scanf, sscanf

FSEEK (TC & MCS & ANSI)

#include <stdio.h>

int fseek(stream, offset, origin);

FILE *stream;

long offset;

int origin;

Описание

Функция перемещает (внутренний) указатель файла, связанного с потоком stream, на новое место в файле, которое вычисляется по смещению offset и указанию направления отсчета origin.

Следующая операция ввода/вывода с указанным потоком stream будет выполнена, начиная с той позиции, на которую произведено перемещение. В потоке, открытом для изменения, следующей операцией может быть чтение или запись.

Аргумент origin должен быть одной из следующих констант, определенных в stdio.h:

SEEK_SET (значение 0) Начало файла

SEEK_CUR (значение 1) Текущая позиция указателя файла

SEEK_END (значение 2) Конец файла

Для текстового режима работы с файлом значение аргумента offset должно быть получено с помощью функции ftell() или равняться нулю.

Функция может быть использована для перемещения указателя в любое место файла. Указатель может быть перемещен за конец файла. Однако попытка переместить указатель за начало файла приведет к ошибке.

При перемещении указателя по файлу признак наличия для файла символа, возвращенного в поток через вызов функции ungetc(), обнуляется, т.е. будет забыто, что был вызов функции ungetc().

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

Значение 0, если указатель успешно перемещен.

Ненулевое значение, если произошла ошибка.

Неопределенное значение для таких устройств, как терминал и принтер.

Смотри также

ftell, lseek, rewind

FSTAT (ТС & MSC)

#include <sys\types.h>

#include <sys\stat.h>

int fstat(handle, buffer);

int handle;

struct stat *buffer;

Описание

Функция позволяет получить информацию об открытых файлах, связанных с заданным дескриптором handle (понятие ввода/вывода нижнего уровня).

Информация помещается в структуру, адрес которой содержит указатель buffer.

Структура с типом stat определена в файле sys\stat.h:

struct stat

{

short st_dev;

short st_ino;

short st_mode;

short st_nlink;

int st_uid; /*идентификатор пользователя (не используется)*/

int st_gid; /*идентификатор группы (не используется)*/

short st_rdev;

long st_size;

long st_atime;

long st_mtime;

long st_ctime;

};

Значение полей структуры:

st_mode битовая строка, содержащая информацию о режимах работы с открытыми файлами. Следующие константы, определенные в файле sys\stat.h, могут быть использованы для выделения битов:

#define S_IFMT 0xF000 /*маска выделения признаков типа файла*/

#define S_IFDIR 0x4000 /*каталог*/

#define S_IFIFO 0x1000 /*устройство типа очередь (FIFO)*/

#define S_IFCHR 0x2000 /*символьное устройство*/

#define S_IFBLK 0x3000 /*блочное устройство*/

#define S_IFREG 0x8000 /*то же 0x0000, обыкновенный файл*/

#define S_IREAD 0x0100 /*доступен по чтению*/

#define S_IWRITE 0x0080 /*доступен по записи*/

#define S_IEXEC 0x0040 /*доступен для выполнения*/

Бит S_IFCHR устанавливается, если файл, с которым связан дескриптор handle, открыт не на устройстве произвольного доступа.

Бит S_IFREG устанавливается, если с дескриптором handle связан обыкновенный файл.

Биты S_IREAD/S_IWRITE чтения/записи устанавливаются согласно типу доступа к файлу:

st_dev — номер дисковода, где расположен файл, или handle в случае устройства;

st_rdev — то же, что и st_dev;

st_nlink — этому элементу всегда присваивается значение 1;

st_size — размер открытого файла в байтах;

st_atime — время последней модификации файла;

st_mtime — время последней модификации файла (копия st_atime);

st_ctime — время последней модификации файла (копия st_atime).

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

Значение 0, если информация об открытом файле получена.

Значение -1, если задан неправильный дескриптор handle; при этом переменной errno присваивается значение EBADF.

Замечание. Если заданный handle относится к устройству, то поля размера и времени в структуре stat не имеют смысла.

Смотри также

access, chmod, filelength, stat

FTELL (ТС & MSC & ANSI)

#include <stdio.h>

long ftell(stream);

FILE *stream;

Описание

Функция позволяет получить текущую позицию (внутреннего) указателя файла, связанного с потоком stream. Позиция задается как смещение (значение типа long int) относительно начала файла.

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

Возвращается смещение по файлу.

Значение -1L сигнализирует об ошибке.

Для устройств терминал и принтер, а также когда файл не открыт, возвращаемое значение не определено.

Смотри также

fseek, lseek, tell

FTIME (ТС 2.0 & MSC)

#include <sys\types.h>

#include <sys\timeb.h>

void ftime(timeptr);

struct timeb *timeptr;

Описание

Функция получает текущее время и записывает его в структуру, адрес которой задается значением параметра timeptr.

Структура timeb определяется в файле sys\timeb.h.

struct timeb

{

long time;

short millitm;

short timezone;

short dstflag;

};

В поле структуры time задается время в секундах, начиная с момента 00:00:00 по Гринвичу (Greenwich Mean Time) 1 января 1970 г.

В поле структуры millitm задается дробная часть этого же времени в тысячных долях секунды (в миллисекундах).

В поле timezone задается различие в минутах, при движении в западном направлении, между временем по Гринвичу (Greenwich Mean Time) и местным временем.

Значение поля timezone устанавливается по значению глобальной переменной timezone (смотри описание функции tzset).

Если значение поля dstflag ненулевое, то время двенадцатичасовой способ представления времени (Daylight Saving Time) используется для данного региона, значение определяется из значения глобальной переменной daylight (смотри описание функции tzset).

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

Функция не возвращает значения.

Смотри также

asctime, ctime, gmtime, localtime, time, tzset

FWRITE (TC & MSC & ANSI)

#include <stdio.h>

int fwrite(buffer, size, count, stream);

char *buffer;

int size;

int count;

FILE *stream;

Описание

Функция дописывает count записей по size байтов из области buffer в выходной поток stream (высокоуровневый ввод/вывод).

Указатель файла (имеется в виду внутренний указатель), связанный с потоком stream, увеличивается на число записанных байтов.

Форматных преобразований данных (как для функции fprintf) не производится. Символы перевода строки ('\n') специально (как для функции fputs) не обрабатываются.

Для работы с файлом, содержащим двоичную информацию, файл необходимо открыть в двоичном режиме (смотри описание функции fopen).

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

Количество реально помещенных в файл записей; это число может быть меньше, чем значение count, если имела место ошибка.

Смотри также

fread, write

GCVT (TC & MSC)

#include <stdlib.h>

char gcvt(value, ndec, buffer);

double value;

int ndec;

char *buffer;

Описание

Функция преобразует число с плавающей точкой (значение параметра value) в строку символов и записывает эту строку по адресу, задаваемому параметром buffer.

Буфер должен быть достаточно большим, чтобы принять преобразованное число с символом конца строки ('\0'), который добавляется автоматически.

Функция попытается перевести ndec значимых цифр в F-формате вывода языка программирования FORTRAN-IV. Если это не удалось, переводится ndec значимых цифр в Е-формат вывода языка программирования FORTRAN-IV. Незначащие нули подавляются при преобразовании.

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

Указатель на строку символов, возвращаемое значение равно значению параметра buffer.

Нет ошибочных кодов возврата.

Смотри также

atof, atoi, atol, ecvt, fcvt

GENINTERRUPT (TC)

#include <dos.h>

void geninterrupt(int intr_num);

Описание

Функция geninterrupt инициирует внутреннее прерывание программы, номер прерывания задается параметром intr_num.

Функция реализуется как встроенная (в текст программы вставляется машинная команда INT).

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

Возвращает значение, зависящее от вызванного прерывания.

Смотри также

getvect, bdos, bdosptr, int86, int86x, iritdos, intdosx intr

GETC, GETCHAR (TC & MSC & ANSI)

#include <stdio.h>

int getc(stream);

FILE *stream;

int getchar();

Описание

Функция getc читает символ из входного потока stream и передвигает связанный с потоком (внутренний) указатель файла на следующий символ.

Функция getchar реализуется как макроопределение getc(stdin).

Вызовы getc и getchar реализуются через макроопределения.

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

Оба макроса возвращают прочитанный символ.

Возвращается значение EOF, если встретилась ошибка или достигнут конец файла, которые можно распознать, используя функции feof или ferror.

Замечание. getc и getchar идентичны fgetc и fgetchar, но являются макросами, а не функциями.

Смотри также

fgetc, fgetchar, getch, getche, putc, putchar, ungetc

GETCBRK (TC)

#include <dos.h>

int getcbrk(void);

Описание

Функция возвращает текущую установленную реакцию на ввод с клавиатуры комбинации символов (control-break).

Функция использует системный вызов 0x33 MS-DOS.

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

Если функция возвращает значение 0, то проверка выключена и программа по control-break не прерывается, если 1 — включена.

Замечание. Программа будет прервана в любом случае, если комбинация клавиш control-break будет введена во время ожидания программой ввода с терминала.

Смотри также

setcbrk

GETCH (TC & MSC)

#include <conio.h> /*используется только для описания функции*/

int getch();

Описание

Функция читает без эхо-печати (без отражения на экране) одиночный символ с консольного (управляющего) терминала.

Функция getch использует входной поток stdin.

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

Прочитанный символ.

Смотри также

cgets, getche, getchar

GETCHE (TC & MSC)

#include <conio.h> /*используется только для описания функции*/

int getche();

Описание

Функция читает одиночный символ с консольного терминала, с эхо-отображением введенного символа на экране с текущей позиции непосредственно через видеоадаптер или через BIOS.

Если набрана комбинация <control/break> CONTROLC, система выполняет прерывание INT23H (CONTROL-C exit).

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

Прочитанный символ.

Нет ошибочных кодов возврата.

Смотри также

cgetc, getch, getchar

GETCURDIR (TC)

#include <dir.h>

int getcurdir(int drive, char *direc);

Описание

Функция читает имя текущего рабочего каталога на указанном параметром drive устройстве (дисководе).

Нумерация устройств с 0 (0 — устройство по умолчанию, 1="А", 2="В", 3="С" и т.д.).

Имя каталога записывается в символьный массив, адрес которого задается значением параметра direc.

Максимальная длина имени каталога определяется константой MAXDIR, заданной в файле dir.h.

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

Функция возвращает -1 при ошибке и 0 в противном случае.

GETCWD (ТС & MSC)

#include <dir.h> /*используется в СП ТС*/

#include <direct.h> /*используется в СП MSC*/

char *getcwd(buf, n);

char *buf;

int n;

Описание

Функция читает полное имя текущего рабочего каталога (включая имя устройства) длины не более n символов, сохраняя его в символьном массиве, адрес которого задается значением параметра buf.

Если для записи полного имени пути требуется строка длиннее n байтов, фиксируется ошибка.

Если первоначально значение buf равно NULL, буфер длины n байтов будет выделен с помощью malloc. Этот буфер может быть позже освобожден с помощью функции free, передав ей как параметр возвращаемое значение функции getcwd (указатель на полученный буфер).

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

Функция возвращает адрес буфера, в который записано имя массива.

В случае ошибки возвращается значение NULL, при этом переменной errno присваивается одно из следующих значений:

ENOMEM Недостаточно памяти, чтобы получить n байтов (когда значение NULL задано в качестве buf).

ERANGE Имя пути превышает n символов.

Смотри также

chdir, mkdir, rmdir

GETDATE (TC)

#include <dos.h>

void getdate(struct date *dateblk);

Описание

Функция getdate получает текущую дату и помещает ее в структуру, адрес которой задается значением параметра dateblk.

Структура date описана в файле dos.h и имеет следующий вид:

struct date

{

int da_year; /*текущий год*/

char da_day; /*месяц года*/

char da_mon; /*месяц (январь = 1)*/

}

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

Функция не возвращает значения.

Смотри также

setdate, gettime, gettime

GETDFREE (ТС)

#include <dos.h>

void getdfree(int drive, struct dfree *dfreep);

Описание

Функция получает информацию о наличии свободного пространства на диске, задаваемом значением параметра drive (0=по умолчанию, 1="А", 2="В" и т.д.). Информация записывается в структуру, адрес которой задается значением параметра dfreep.

Структура описана в файле dos.h и имеет следующий вид:

struct dfree

{

unsigned df_avail; /*число незанятых кластеров*/

unsigned df_total; /*общее число кластеров*/

unsigned df_bsec /*число байт в секторе*/

unsigned df_sclus /*число секторов в кластере*/

}

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

Функция не возвращает значения.

Если произошла ошибка, элементу df_sclus присваивается значение -1.

Смотри также

getfat, getdisk

GETDISK (TC)

#include <dir.h>

int getdisk(void);

Описание

Функция getdisk возвращает номер текущего диска (0="А", 1="В", 2="С" и т.д.). Используется системный вызов 0x19 MS-DOS.

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

Номер диска.

Смотри также

setdisk, getcwd, getcurdir

GETDTA (ТС)

#include <dos.h>

char far *getdta(void);

Описание

Функция getdta возвращает текущее значение адреса области передачи данных диска (DTA) (подробности смотри в руководстве "Technical Reference Manual").

Используется системный вызов MS-DOS 0x2F.

Примечание. Корректно работает с моделями памяти: compact, large и huge. В малых моделях памяти работает корректно только если не вызываются подпрограммы, написанные на ассемблере (полагается, что DTA-адрес лежит в пределах текущего сегмента данных, подпрограммы на других языках могут нарушить это соглашение).

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

Адрес передачи для последней выполненной дисковой операции.

Смотри также

setdta, findfirst

GETENV (ТС & MSC & ANSI)

#include <stdlib.h> /*используется только для описания функции*/

char *getenv(varname);

char *varname;

Описание

Функция организует поиск имени varname в списке переменных окружения.

Переменные окружения определяют среду, в которой выполняется процесс (например, переменная окружения PATH определяет, в каких каталогах по умолчанию ведется поиск файлов для выполнения).

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

Указатель по таблице параметров окружения на строку, содержащую значение переменной varname.

Для системы программирования ТС версии 1.5 возвращается значение NULL, если заданная переменная не определена.

Для системы программирования ТС версии 2.0 возвращается указатель на пустую строку, если заданная переменная не определена.

Замечание 1. Таблицу переменных окружения нельзя изменить непосредственно. Чтобы сделать это, используйте функцию putenv. Чтобы модифицировать строку, указатель на которую возвращает функция getenv, без изменений в таблице окружения, используйте функцию strdup или strcpy, чтобы предварительно скопировать строку на новое место.

Замечание 2. Функции getenv и putenv используют глобальную переменную environ, чтобы получить доступ к таблице окружений.

Замечание 3. Имя переменной, которое подается как аргумент функции getenv, может быть задано как в верхнем регистре (прописными буквами), так и в нижнем (строчными).

Смотри также

putenv

GETFAT, GETFATD (ТС)

#include <dos.h>

void getfat(drive, fatblkp);

int drive;

struct fatinfo *fatblkp;

void getfatd(fatblkp);

struct fatinfo *fatblkp;

Описание

Функции getfat и getfatd позволяют получить информацию из таблицы размещения файлов (File Allocation Table — FAT).

Параметр drive для функции getfat задает номер устройства: (0=устройство по умолчанию, 1="А", 2="В", 3="С" и т.д.).

Функция getfatd получает информацию об устройстве по умолчанию.

Обе функции записывают информацию о диске в структуру, адрес которой задается параметром fatblkp.

Структура описывается в файле dos.h и имеет следующий вид:

struct fatinfo

{

char fi_sclus; /*число секторов в кластере*/

char fi_fatid; /*FAT-идентификатор*/

char fi_ndus; /*число кластеров*/

int fi_bysec; /*число байт в секторе*/

}

Смотри также

getdfree

GETFTIME (TC)

#include <dos.h>

int getfttme (int handle, struct ftime *fttmep);

Описание

Функция getftime позволяет получить время и дату создания файла, открытого с помощью функции open, файл идентифицируется по значению связанного с ним дескриптора handle.

Результат записывается в структуру, адрес которой определяется значением параметра ftimep.

Структура ftime описывается в файле dos.h и имеет следующий вид:

struct ftime

{

unsigned ft_sec:5; /*деленное на два число секунд*/

unsigned ft_min:6; /*минуты*/

unsigned ft_hour:5; /*часы*/

unsigned ft_day:5; /*число*/

unsigned ft_month:4; /*месяц*/

unsigned ft_year:7; /*год—1980*/

};

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

Функция возвращает значение 0 при успешном завершении операции и число меньше 0 при ошибке.

Смотри также

setftime

GETPASS (ТС)

#include <conio.h>

char *getpass(char *prompt);

Описание

Функция getpass используется для ввода с консольного терминала пароля, который пользователь должен набрать в ответ на выводимое на экран приглашение, задаваемое строкой prompt с завершающим нулем ('\0').

При вводе пароля отключается эхо-печать вводимых с терминала символов.

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

Возвращается указатель на строку с завершающим нулем, содержащую не более восьми первых символов вводимого пароля.

Пароль хранится в статическом буфере (статическом символьном массиве) функции и переписывается при каждом обращении к ней.

Смотри также

getch

GETPID (MSC)

#include <process.h> /*используется только для описания функции*/

int getpid();

Описание

Функция возвращает целое число — номер текущего (выполняемого) процесса, по этому номеру однозначно определяется вызванный процесс.

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

Возвращается номер процесса.

Нет ошибочных кодов возврата.

Смотри также

mktemp

GETPSP (ТС)

#include <dos.h>

unsigned getpsp(void);

Описание

Функция используется для получения сегментного префикса текущего программного адреса для текущего выполняемого процесса, через системное прерывание 0x62 операционной системы MS-DOS. За подробностями обращайтесь к справочнику "Technical Reference".

Работает только в ОС MS-DOS версий 3.0 и более поздних.

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

Возвращается сегментный адрес.

Смотри также

getenv

GETS (ТС & MSC & ANSI)

#include <stdio.h>

char *gets(buffer);

char *buffer;

Описание

Функция gets читает строку из стандартного потока ввода stdin (высокоуровневый ввод/вывод) и помещает считанную строку по адресу, задаваемому параметром buffer.

В строку включаются все символы до первого встретившегося символа новой строки ('\n'), не включая его. Строка-результат заканчивается нулевым символом ('\0').

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

Значение параметра (адрес буфера), если строка считана удачно.

Значение NULL, если произошла ошибка или достигнут конец файла, эти ситуации можно различить, используя функции feof и ferror.

Смотри также

fgets, fputs, puts

GETTIME (TC)

#include <dos.h>

void gettime (struct time *timep);

Описание

Функция gettime получает текущее время и записывает его в структуру, адрес которой задается значением аргумента timep.

struct time

{

unsigned char ti_min /*минуты*/

unsigned char ti_hour /*часы*/

unsigned char ti_hund /*сотые доли секунд*/

unsigned char ti_sec /*секунды*/

}

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

Функция не возвращает значения.

GETVECT (ТС)

#include <dos.h>

void interrupt(*getvect(intr_num))();

int intr_num;

Описание

ОС MS-DOS поддерживает набор распознаваемых аппаратурой векторов прерываний с номерами от 0 до 255. 4-байтовое значение, которое хранится в каждом векторе, является адресом функции обработки прерывания.

Функция getvect читает значение вектора прерывания по номеру прерывания и интерпретирует считанное значение как far-указатель на функцию обработки прерывания.

Используется системный вызов операционной системы MS-DOS 0x35.

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

Адрес функции, используемой как обработчик прерываний.

Смотри также

disable, setvect

GETVERIFY (ТС)

#include <dos.h>

int getverify(void);

Описание

Функция позволяет узнать, установлен ли внутренний флажок ОС MS-DOS, управляющий выполнением контрольных проверок при каждой записи на диск. Если этот флаг включен, каждая операция записи на диск проверяется.

Используется системный вызов ОС MS-DOS 0x54.

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

Функция getverify возвращает значение 0, если проверка отключена. Возвращается значение 1, если проверка включена.

Смотри также

setverify

GETW (ТС & MSC)

#include <stdio.h>

int getw(stream);

FILE *stream;

Описание

Функция getw читает очередное двоичное значение типа int из входного потока stream (считывая для этого количество байтов, равное sizeof(int)) и продвигает внутренний указатель файла, связанный с этим потоком, на следующий еще не прочитанный символ.

Функция getw не предполагает специального выравнивания символов в потоке.

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

Прочитанное значение целого.

Значение EOF, если обнаружена ошибка или встретился конец файла; однако значение EOF может быть возвращено и при правильном значении целого, так что необходимо использовать функции feof и ferror, чтобы распознать ошибочные условия.

Замечание. Функция может быть использована для совместимости с другими библиотеками. Проблема переноса может заключаться в том, что размеры переменной типа int и старшинство байт в переменной типа int могут быть различными в разных архитектурах.

Смотри также

putw

GMTIME (ТС & MSC & ANSI)

#include <time.h>

struct tm *gmtime(time);

long *time;

Описание

Функция gmtime преобразует время из длинного целого к нотации по Гринвичу.

Длинное значение времени представляет собой секунды, прошедшие с момента 00:00:00 1 января 1970 г., по Гринвичу (Greenwich Mean Time); это значение обычно получают при вызове функции time.

Функция gmtime разбивает значение time и помещает компоненты в структуру типа tm, определенного в файле time.h.

Результат отражает время по Гринвичу (Greenwich Mean Time), но не время региона.

Структура типа tm содержит следующие поля:

tm_sec Секунды

tm_min Минуты

tm_hour Часы (0-24)

tm_mday День месяца (1-31)

tm_mon Месяц (0-11; январь=0)

tm_year Год (текущий год минус 1900)

tm_wday День недели (0-6; воскресенье=0)

tm_yday День года (0-365; первое января=0)

tm_isdst Ненулевое, если установлено Daylight Saving Time, иначе нулевое.

Под ОС MS-DOS даты до 1980 года не воспринимаются. Если параметр time задает дату до 1 января 1980 г., то gmtime возвращает указатель на структуру, представляющую время 00:00:00 1 января 1980 г.

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

Указатель на строку-результат.

Нет ошибочных кодов возврата.

Смотри также

asctime, ctime, ftime, localtime, time

GSIGNAL (TC 1.5)

#include <signal.h>

int gsignal(sig);

int sig;

Описание

Функция gsignal возбуждает программный сигнал (пользовательское прерывание выполняемого процесса) и вызывает функцию обработки, связанную с этим сигналом.

Замечание. В системе программирования ТС версии 2.0 используется для тех же целей функция raise.

Смотри также

ssignal, signal, abort, exit, _exit, _fpreset, spawnl, spawnle, spawnlp, spawnv, spawnve, spawnvp

HALLOC (MSC)

#include <malloc.h> /*используется только для описания функции*/

char huge *halloc(n, size);

long n; /*обратите внимание на тип параметра n*/

unsigned size;

Описание

Функция halloc позволяет выделять динамически участок памяти размером более 64 Кбайтов.

Функция выделяет память для массива из n элементов, каждый элемент которого имеет размер в size байтов.

Каждый элемент инициализируется 0.

Если размер массива превышает 128 Кбайтов, то размер элемента массива должен быть степенью 2.

Замечание. Система программирования ТС не предоставляет аналогичных возможностей.

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

Huge-указатель на выделенную память.

Выделенная память, на которую указывает возвращаемое значение, является выровненной для любого типа объектов. Чтобы получить указатель типа, отличного от char huge, необходимо провести соответствующие преобразования.

Возвращается значение NULL, если нет достаточной доступной памяти.

Смотри также

calloc, free, hfree, malloc, realloc, faralloc

HARDERR (TC)

#include <dos.h>

void harderr(fptr);

int(*fptr)();

Описание

Функция harderr предназначена для обработки аппаратных ошибок.

Функция harderr регистрирует функцию, которая будет использоваться для обработки аппаратных ошибок вместо стандартных обработчиков.

Используется системное прерывание MS-DOS 0x24.

Функция, на которую указывает параметр fptr, должна иметь заголовок вида:

handler(int errval, int ax, int bp, int si)

errval — это код ошибки, установленный в регистре DI; ax, bp и si — это соответствующие регистры; ах указывает, на каком диске или устройстве произошла ошибка. Если ах<0, то не на диске. Если ах>0, то, используя маску 0x00FF, можно получить номер диска (1=А, 2=В и т.д.).

bp и si вместе указывают на заголовок драйвера устройства, соответствующего отказавшему дисководу. bp содержит адрес сегмента, si — смещение.

Функция, на которую указывает fptr, не вызывается непосредственно.

Функция harderr настраивает обработчик прерываний MS-DOS, который в свою очередь будет вызывать задаваемую функцию при возникновении аппаратных ошибок.

Примечание. Функция, на которую указывает параметр fptr, должна возвращать следующие значения:

0 — игнорировать ошибку,

1 — повторить операцию,

2 — прекратить выполнение операции.

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

Функция harderr не возвращает значения.

Смотри также

hardresume, hardretn, peek, poke

HARDRESUME (ТС)

#include <dos.h>

void hardresume(int rescode);

Описание

Функция hardresume предназначена для обработки аппаратных ошибок.

Обработчик ошибок (задаваемый при помощи функции harderr) может передать управление обратно операционной системе либо через оператор return, либо через вызов функции hardresume.

Значение параметра rescode передается в ОС и имеет следующий смысл: 0 — игнорировать ошибку, 1 — повторить операцию, 2 — прервать операцию.

Прерывание осуществляется с помощью вызова прерывания MS-DOS 0x23, (control-break прерывание).

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

Функция не возвращает ни значения, ни управления.

Смотри также

harderr, hardretn

HARDRETN (TC)

#include <dos.h>

void hardretn(int errcode);

Описание

Функция hardretn предназначена для выполнения прямого возврата из обработчика прерываний (указанного с помощью функции harderr) в прикладную программу.

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

Функция не возвращает значения.

Смотри также

harderr, hardresume

HFREE (MSC)

#include <malloc.h> /*используется только для описания функции*/

void hfree(ptr);

char huge *ptr;

Описание

Функция hfree освобождает блок памяти, выделенный ранее через обращение к функции halloc. Число освобождаемых байтов совпадает с указанным в запросе на получение блока. После вызова освобожденный блок вновь доступен для получения.

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

Функция не возвращает значения.

Смотри также

halloc, free, malloc

HYPOT (TC & MSC)

#include <math.h> /*используется только для описания функции*/

double hypot(x, у);

double x, y;

Описание

Функция hypot вычисляет длину гипотенузы по двум заданным катетам х и у. Вызов функции hypot эквивалентен вычислению значения выражения sqrt(x*x+у*у).

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

Длина гипотенузы.

Значение HUGE, если произошло переполнение; при этом переменной errno присваивается значение ERANGE.

Смотри также

cabs

INP (MSC), INPORT (TC), INPORTB (TC)

Использование (MSC)

#include <conio.h> /*используется только для описания функции*/

int inp(port);

unsigned port;

Использование (ТС)

#include <dos.h>

int inport(int port);

int inportb(int port);

Описание (MSC)

Функция inp читает один байт с вводного порта port. Аргумент port — это беззнаковое целое от 0 до 65535.

Описание (ТС)

Функция inport читает слово из порта ввода port.

Функция inportb читает байт из порта ввода port.

Примечание (ТС). Inport и inportb — функции, если не включен файл dos.h. Inport и inportb — макросы, вызывающие вставку в текст программы соответствующей машинной инструкции, если включен файл dos.h.

Примечание (ТС 2.0). Для переносимости программ в файл dos.h вставлено макроопределение:

#define inp(a, b) inportb((a), (b))

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

Прочитанный байт для функции inp (MSC).

Прочитанный байт или прочитанное слово соответственно для функций inportb и inport (TC).

Нет ошибочных кодов возврата.

Смотри также

outp

INT86 (ТС & MSC)

#include <dos.h>

int int86(intno, inregs, outregs);

int intno;

union REGS *inregs;

union REGS *outregs;

Описание

Функция int86 выполняет системное прерывание для микропроцессоров семейства Intel 8086/8088, прерывание определяется номером, задаваемым значением параметра intno.

До возбуждения прерывания функция int86 копирует содержимое структуры, адрес которой задается значением параметра inregs, в соответствующие регистры.

После завершения обработки прерывания функция копирует содержимое регистров в структуру, адрес которой задается значением параметра outregs.

Также копируется значение флага статуса системы (системный флаг) в поле cflag в структуре outregs.

Функция int86 используется для непосредственного обращения к системным вызовам операционной системы MS-DOS через прерывания.

Структуры, адреса которых передаются как параметры, имеют тип REGS, описанный в файле dos.h.

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

Содержимое регистра АХ после прерывания.

Если поле cflag в outregs ненулевое, значит, имела место ошибка и переменной doserrno присвоено значение, обозначающее код ошибки.

Смотри также

bdos, intdos, intdosx, int86x

INT86X (MSC & ТС)

#include <dos.h>

int int86x(intno, inregs, outregs, segregs);

int intno;

union REGS *inregs;

union REGS *outregs;

struct SREGS *segregs;

Описание

Функция int86x, как и функция int86, вызывает системное прерывание для процессора семейства Intel 8086/80286, номер прерывания определяется значением параметра intno.

До начала прерывания функция int86x выполняет копирование содержимого структур, адреса которых задаются значениями параметров inregs и segregs, в соответствующие регистры.

В структуре, адрес которой задается параметром segregs, используются только значения регистров DS и ES.

После прерывания функция int86x копирует текущие значения регистров в структуру, адрес которой задается значением параметра outregs, и восстанавливает значение регистра DS. Также копируется статус системы (системный флаг) в поле cflag в структуре, адрес которой задается значением параметра outregs.

Структуры REGS и SREGS описываются в файле dos.h (смотри также описание функции int86).

struct SREGS

{

unsigned int es; /*значение регистра ES*/

unsigned int cs; /*значение регистра CS*/

unsigned int ss; /*значение регистра SS*/

unsigned int ds; /*значение регистра DS*/

}

Функция int86x предназначена для непосредственного обращения к прерываниям DOS, которые используют значение сегмента DS, отличное от значения этого сегмента по умолчанию, и/или принимают аргумент через регистр ES.

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

Значение регистра АХ после прерывания.

Если поле cflag в outregs ненулевое, значит, встретилась ошибка и переменной doserrno присвоено значение, обозначающее код ошибки.

Замечание (MSC). Значения сегмента, аргументы segregs, могут быть получены с использованием либо функции segread, либо макроса FP_SEG.

Смотри также

bdos, intdos, intdosx, int86, segread, FP_SEG

INTDOS (TC & MSC)

#include <dos.h>

int intdos(inregs, outregs);

union REGS *inregs;

union REGS *outregs;

Описание

Функция intdos выполняет вызов к ОС MS-DOS через прерывание 0x21 (0x21 — основное прерывание, через которое происходит обращение к системным функциям операционной системы MS-DOS).

Выполняются те же действия, что и для функции int86.

Структура REGS определяется в файле dos.h.

До выполнения команды функция intdos копирует содержимое структуры, адрес которой задается значением параметра inregs, в соответствующие регистры. После выполнения команды функция intdos копирует текущие значения регистров в структуру, адрес которой задается значением параметра outregs. Также копируется статус системы (системный флаг) в поле cflag в структуре outregs. Если это поле ненулевое, значит, флаг был установлен при выполнении системного вызова и сигнализирует об ошибке.

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

Значение регистра АХ после системного вызова.

Если значение поля cflag в структуре outregs ненулевое, значит, встретилась ошибка и переменной doserrno присвоено значение, соответствующее коду ошибки.

Смотри также

bdos, intdosx

INTDOSX (TC & MSC)

#include <dos.h>

int intdosx(inregs, outregs, segregs);

union REGS *inregs;

union REGS *outregs;

struct SREGS *segregs;

Описание

Функция intdosx выполняет вызов к ОС MS-DOS через прерывание 0x21 (0x21 — основное прерывание, через которое происходит обращение к системным функциям операционной системы MS-DOS).

Выполняются те же действия, что и для функции int86x.

Структуры REGS и SRREGS определяются в файле dos.h (смотри описание функций int86 и int86x).

До прерывания функция intdosx копирует содержимое структур, адреса которых задаются значениями параметров inregs и segregs, в соответствующие регистры. В структуре segregs используются только значения регистров DS и ES.

После прерывания функция intdosx копирует текущие значения регистров в структуру, адрес которой задается значением параметра outregs, и восстанавливает значение регистра DS. Также копируется статус системы (системный флаг) в поле cflag в структуре outregs.

Функция intdosx предназначена для непосредственного обращения к DOS с использованием значения сегмента DS, отличного от значения этого сегмента по умолчанию, и/или передачей аргумента через регистр ES.

Функция intdosx предоставляет возможность программам, которые используют сегменты данных large-модели памяти или far-указатели, определяющие эти сегменты, использовать эти указатели во время вызова системы.

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

Значение регистра АХ после системного вызова.

Если поле cflag в outregs ненулевое, значит, встретилась ошибка и переменной doserrno присвоено значение, соответствующее коду ошибки.

Замечание (MSC). Значения сегмента, аргументы segregs, могут быть получены с использованием либо функции segread, либо макроса FP_SEG.

Смотри также

bdos, intdos, int86, segread, FP_SEG

INTR (TC)

#include <dos.h>

void intr(int intr_num, struct REGPACK *preg);

Описание

Предоставляет альтернативный интерфейс по сравнению с функцией int86.

Функция выполняет прерывание номер intr_num, копируя значение регистров из структуры, адрес которой задается значением параметра preg.

После завершения прерывания значения регистров записываются в структуру, адрес которой задается значением параметра preg.

Структура REGPACK описана в <dos.h>:

struct REGPACK

{

unsigned r_ax, r_bx, r_cx, r_dx;

unsigned r_ bp, r_si, r_di, r_ds, r_es, r_flags;

};

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

Функция не возвращает значения.

Смотри также

int86, int86x, intdos, intdosx, geninterrupt

IOCTL (TC)

#include <io.h>

int ioctl(int handle, int cmd[, int *argdx, int argcx]);

Описание

Функция ioctl предназначена для контроля устройств ввода/вывода.

Использует системный вызов MS-DOS 0x44.

Значение параметра cmd указывает вид операции для устройства.

Таблица 10.1.

cmd Операция
0 Получить информацию об устройстве
1 Задать информацию об устройстве
2 Прочитать байт argcx по адресу, указанному в argdx
3 Записать байт argcx по адресу, указанному в argdx
4 Аналогично 2, только значение параметра handle интерпретируется как номер устройства (0=текущий, 1=А и т.д.)
5 Аналогично 3, только значение параметра handle интерпретируется как номер устройства (0=текущий, 1=А и т.д.)
6 Получить статус ввода
7 Получить статус вывода
8 Проверяет возможность отключения; для ОС MS-DOS версии 3.0 и выше
11 Установить счетчик повторных попыток удовлетворения конфликтов; только для ОС MS-DOS версии 3.0 и выше

Смотрите руководство "MS-DOS Programmer's Reference Manual" на предмет более детальной информации.

Замечание. Функция ioctl в системе программирования ТС не совместима с функцией ioctl в системах программирования языка Си для операционной системы UNIX.

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

Если cmd=0 или 1 — функция возвращает информацию об устройстве (копию регистра DX).

Если cmd=2-5 — функция возвращает число переданных байтов.

Если cmd=6-7 — функция возвращает слово состояния устройства.

Функция ioctl возвращает -1 при ошибке, при этом переменной errno присваивается одно из следующих значений:

EINVAL — неверный аргумент

EBADF — плохой номер файла

EINVDAT — неверные данные

ISALNUM, ISALPHA (TC & MSC & ANSI), ISASCII (TC & MSC)

#include <ctype.h>

int isalnum(с); /*тест для символов ('A'-'Z', 'a'-'z', '0'-'9')*/

int isalpha(с); /*тест для букв ('A'-'Z', 'a'-'z')*/

int isascii(с); /*тест для символов из кодировки ASCII*/

int с;

Описание

Эти функции проверяют условие для аргумента, возвращая ненулевое значение, если целое удовлетворяет условию теста, и нулевое значение, если нет. Имеется в виду набор символов ASCII (Американский стандарт на кодировку информации для обмена).

Функция isascii возвращает корректный результат для всех значений целого. Однако остальные функции возвращают корректный результат только для значений целых, соответствующих набору ASCII-символов (т.е. только для тех, для которых значение isascii(c) истинно), для не ASCII-символов возвращают значение EOF (константа, определенная в файле stdio.h).

Замечание. Функции выполняются как макросы.

Замечание (ТС). Проверяется младший байт аргумента.

Смотри также

iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper

ISATTY (TC & MSC)

#include <io.h> /*используется только для описания функции*/

int isatty(handle);

int handle;

Описание

Функция isatty возвращает ненулевое значение, если устройство, связанное с дескриптором файла handle (ввод/вывод нижнего уровня), является символьным устройством, и значение 0 — в противном случае.

Символьными устройствами считаются: терминал, консоль, принтер, последовательный порт.

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

Ненулевое значение, если устройство символьное.

Значение 0 иначе.

ISCNTRL, ISDIGIT, ISGRAPF, ISLOWER, ISPRINT, ISPUNCT, ISSPACE, ISXDIGIT, ISUPPER (TC & MSC & ANSI)

#include <ctype.h>

int iscntrl(c); /*тест для управляющих символов (0x00-0x1f или 0x7f)*/

int isdigit(c); /*тест для цифр ('0'—'9')*/

int isgrapf(c); /*тест для печатных символов, не включая пробел (0x21-0х7е)*/

int islower(c); /*тест для прописных букв ('a'-'z')*/

int isprint(c); /*тест для печатных символов (0х20-0х7е)*/

int ispunct(c); /*тест для символов — знаков пунктуации*/

int isspace(c); /*тест для пробела <0x09-0x0d или 0x20)*/

int isxdigit(c); /*тест для 16-чных цифр ('А'-'F','а'-'f' или '0'-'9')*/

int isupper(c); /*тест для заглавных букв ('A'-'Z')*/

int c;

Описание

Эти функции проверяют условие для аргумента, возвращая ненулевое значение, если значение аргумента удовлетворяет условию теста, и нулевое значение, если нет. Имеется в виду набор символов ASCII.

Функции возвращают корректный результат только для целых значений, соответствующих набору ASCII-символов (только те, для которых isascii(c) истинно), для не ASCII-символов возвращают значение EOF (константа, определенная в файле stdio.h).

Замечание. Функции выполняются как макросы.

Замечание (ТС). Проверяется младший байт аргумента.

Смотри также

isalnum, isalpha, isascii, toascii, tolower, toupper

ITOA (TC & MSC)

#include <stdlib.h> /*используется только для описания функции*/

char *itoa(value, string, radix);

int value;

char *string;

int radix;

Описание

Функция itoa преобразует значение, заданное параметром value, в строку символов, завершающуюся нулевым символом ('\0'), и помещает результат по адресу, определяемому значением параметра string.

Значение аргумента radix определяет систему исчисления для представления результата, значение должно быть в пределах от 2 до 36. Если значение radix равно 10 и значение value отрицательно, первым символом в строке будет знак '-'.

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

Указатель на строку-результат (копия значения параметра string).

Нет ошибочных кодов возврата.

Замечание. Область памяти для string должна быть достаточной, чтобы поместить результат. Функция может возвращать до 17 байтов.

Смотри также

ltoa, ultoa

KBHIT (ТС & MSC)

#include <conio.h> /*используется только для описания функции*/

int kbhit();

Описание

Функция kbhit определяет нажатие клавиши (ввод символа) на клавиатуре консольного терминала.

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

Ненулевое значение, если какая-либо клавиша была нажата; значение 0 в противном случае.

Смотри также

getch, getche, bioskey

KEEP (TC)

#include <dos.h>

void keep(int status, intsize);

Описание

Возвращает управление MS-DOS со статусом завершения status. Текущая программа при этом остается резидентной в оперативной памяти.

Программа ограничивается в длину в size параграфов, остальная оперативная память становится свободной (может быть занята другими программами).

Используется системный вызов MS-DOS 0x31.

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

Функция не возвращает значения, как и управления (управление передается не вызвавшей функции, а операционной системе).

Смотри также

abort, exit

LABS (TC & MSC & ANSI)

#include <stdlib.h> /*используется только для описания функции*/

long labs(n);

long n;

Описание

Функция labs возвращает абсолютное значение длинного целого n.

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

Абсолютное значение (типа long). Нет ошибочных кодов возврата.

Смотри также

abs, cabs, fabs

LDEXP (TC & MSC & ANSI)

#include <math.h>

double ldexp(x, exp);

double x;

int exp;

Описание

Функция вычисляет значение х*2ехр, значение х умножить на значение 2 в степени ехр.

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

Возвращается значение x*2exp.

Замечание (MSC). Возвращается значение HUGE, если произошло переполнение, при этом знак HUGE зависит от знака х. Возвращается значение 0, если происходит потеря значимости. В обоих случаях переменной errno присваивается значение ERANGE.

Смотри также

frexp, modf

LDIV (ТС 2.0 & ANSI)

#include <stdlib.h>

ldiv_t ldiv(number, denom);

long number;

long denom;

Описание

Функция ldiv предназначена для выполнения деления двух чисел типа long, с выделением частного и остатка от деления.

Значения параметров number и denom задают делимое и делитель соответственно.

Тип ldiv_t описан в файле stdlib.h следующим образом:

typedef struct

{

long int quot; /*частное*/

long int rem; /*остаток от деления*/

ldiv_t;

}

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

Возвращается структура из двух элементов (возвращаемое значение — сама структура, а не ее адрес), которые содержат частное и остаток от деления.

Смотри также

div

LFIND, LSEARCH (ТС & MSC)

#include <search.h> /*используется в системе программирования MSC*/

#include <stdlib.h> /*используется в системе программирования ТС*/

char *lfind(key, base, num, width, compare);

char *lsearch(key, num, width, compare);

char *key;

char *base;

unsigned *num, width;

int(*compare)(char *pl, char *p2);

Описание

Функции lfind и lsearch выполняют последовательный поиск значения key (размер key считается равным width байтов) в массиве из num элементов, каждый из которых имеет размер width байтов.

В отличие от функции bsearch, функции lfind и lsearch не требуют, чтобы массив был отсортирован.

Аргумент base является указателем на начало массива, в котором будет вестись поиск. Если элемент key не найден, функция lsearch добавляет его в конец, функция lfind этого не делает.

Аргумент compare является указателем на предполагаемую пользователем функцию, с помощью которой будут сравниваться два элемента, функция, адрес которой содержит параметр compare, должна возвращать значение, определяющее их равенство/неравенство.

Эта функция должна сравнивать элементы и возвращать следующие значения:

Ненулевое элемент1 и элемент2 различны

0 элемент1 и элемент2 идентичны

Обе функции, lfind и lsearch, вызывают функцию, адрес которой задается значением параметра compare, один или более раз во время поиска, передавая ей как параметры указатели на сравниваемые элементы.

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

Указатель на первое месторасположение key в массиве. Значение NULL, если элемент key не найден в массиве.

Смотри также

bsearch

LOCALTIME (ТС & MSC)

#include <time.h>

struct tm *localtime(time);

long *time;

Описание

Функция localtime преобразует время из длинного целого к формату структуры tm.

Значение time — секунды, прошедшие с момента 00:00:00 первого января 1970 г. по Гринвичу (Greenwitch Mean Time); это значение обычно получают с помощью функции time.

Функция localtime разбивает значение time, корректирует его для времени региона (временной зоны) и учитывает приведение к 12-часовому представлению (Daylight Saving Time), и помещает скорректированное время в структуру типа tm (смотри описание функции gmtime для получения описания структуры tm).

Под операционной системой MS-DOS даты до 1980 г. не воспринимаются. Если time представляет дату до 1980 г., то localtime возвращает структуру, представляющую дату 00:00:00 первого января 1980 г.

Функция localtime осуществляет коррекцию для времени региона, если пользователь установил переменную окружения (операционной системы) TZ. Значение переменной TZ должно быть трехбуквенным именем зоны (такой как PST), следующим за, возможно, знаковым числом, задающим различие между временем по Гринвичу (Greenwitch Mean Time) и временем региона. Число может следовать за трехбуквенным именем, задающим способ представления времени (Daylight Saving Time) региона (такой как PDT). Функция localtime использует различие между временем по Гринвичу (Greenwitch Mean Time) и временем региона, чтобы скорректировать значение времени.

Если Daylight Saving Time в настоящем установлено в TZ, localtime также корректирует время для этого региона. Если переменной TZ не присвоено значение, по умолчанию используется значение PSTPDT.

Когда переменной TZ присвоено значение, три другие переменные окружения, TIMEZONE, DAYLIGHT и TZNAME, устанавливаются автоматически. Смотри описание функции tzset для описания этих переменных.

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

Указатель на строку-результат.

Нет ошибочных кодов возврата.

Замечание. Функции gmtime и localtime используют один и тот же буфер для преобразований. Поэтому при каждом вызове одной из этих функций результаты предыдущего вызова теряются.

Смотри также

asctime, ctime, ftime, gmtime, time, tzset

LOCKING (MSC), LOCK(TC), UNLOCK(TC)

Использование (MSC)

#include <sys\locking.h>

#include <io.h>

int locking(handle, mode, nbyte);

int handle;

int mode;

long nbytes;

Использование (ТС)

#include <io.h>

int lock(int handle, long offset, long length);

int unlock(int handle, long offset, long length);

Описание (MSC)

Функция locking запирает или отпирает nbytes байтов файла, определяемого дескриптором handle (ввод/вывод нижнего уровня). Запертые байты в файле недоступны последующему чтению или записи другими процессами. Отпирание файла разрешает другим процессам читать и писать в ранее запертые файлы. Запирание и отпирание начинается с текущей позиции указателя файла и действует на последующие nbytes байтов или до конца файла.

Mode определяет запирающее действие и должно иметь одно из следующих значений:

LK_LOCK Запереть определяемые байты. Если байты не могут быть заперты, попытаться снова через 1 сек.

Если после 10 попыток байты не удалось запереть, возвращается ошибка.

LK_RLCK Так же, как lk_lock.

LK_NBLK Запереть определяемые байты. Если байты не удалось запереть, возвратить ошибку.

LK_NBRLCK Так же, как lk_nblck.

LK_UNLCK Отпереть определяемые байты. Байты должны быть заперты ранее. Перечисленные константы определяются в файле sys\locking.h:

#define LK_UNLCK 0

#define LK_LOCK 1

#define LK_NBLCK 2

#define LK_RLCK 3 /*блокирование записи в участок файла*/

#define LK_NBRLCK 4 /*разблокирование записи в участок файла*/

В файле может быть несколько запертых участков, но они не должны пересекаться. Только один участок может отпираться за одно обращение. При отпирании файла участок файла, который отпирается, должен соответствовать участку файла, который был ранее заперт.

Функция locking не работает со смежными участками, поэтому, если два запертых региона являются смежными, каждый регион должен отпираться отдельно.

Не должно оставаться запертых участков перед закрытием файла или завершением программы.

Возвращаемое значение (MSC)

Значение 0, если запирание прошло успешно.

Значение -1, при неудачной попытке; при этом переменной errno присваивается одно из следующих значений:

EACCES Нарушение запирания (участок уже заперт и отперт).

EBADF Неверный дескриптор файла (handle).

EDEADLOCK Нарушение запирания: когда определены флаги lk_lock или lk_rlck и файл не удалось запереть после 10 попыток.

EINVAL режим разделения SHARE_COM не установлен.

Замечание. Запирание должно использоваться только под операционной системой MS-DOS версии 3.0 и выше, под ранними версиями результат не достигается.

Описание (ТС)

Функции lock и unlock предназначены для блокировки и разблокировки файла, заданного дескриптором handle. Работают только в версиях ОС MS-DOS 3.0 и выше.

Участок файла определяется по смещению в файле (аргумент offset) и размеру (аргумент length).

Если файл заблокирован, то все остальные программы могут только читать область, заданную offset и length.

Возвращаемое значение (ТС)

Функции возвращают 0 при успешном выполнении операции и -1 при ошибке.

Смотри также

creat, open

LOG, LOG10 (ТС & MSC & ANSI)

#include <math.h>

double log(x);

double log10(x);

double x;

Описание

Функции log и log10 вычисляют натуральный логарифм и логарифм по основанию 10 от параметра х соответственно.

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

Результат логарифма.

Если значение х отрицательно, обе функции печатают сообщение об ошибке DOMAIN в стандартный поток вывода сообщений об ошибках stderr и возвращают отрицательное значение HUGE.

Если значение х нулевое, обе функции печатают сообщение об ошибке SING в поток stderr и возвращают отрицательное значение HUGE. В обоих случаях переменной errno присваивается значение EDOM.

Обработку ошибок можно изменить, используя функцию matherr.

Смотри также

exp, matherr, pow

LONGJMP (ТС & MSC & ANSI)

#include <setjmp.h>

void longjmp(env, value);

jmp_buf env;

int value;

Описание

Функция longjmp восстанавливает окружение, ранее сохраненное в переменной env посредством вызова функции setjmp.

Окружение включает в себя (для системы программирования ТС):

— сегментные регистры CS, DS, ES, SS

— регистры-переменные SI, DI

— указатель стека SP

— указатель на рамку функции в стеке ВР

— флажки

Для системы программирования ТС тип jmp_buf определяется в файле setjmp.h следующим образом:

typedef struct

{

unsigned j_sp;

unsigned j_ss;

unsigned j_flag;

unsigned j_cs;

unsigned j_ip;

unsigned j_bp;

unsigned j_di;

unsigned j_es;

unsigned j_si;

unsigned j_ds;

}

jmp_buf[l]; /*всего 20 байтов*/

Для системы программирования MSC тип jmp_buf определяется в файле setjmp.h следующим образом:

#define _JBLEN 9 /*bp, di, si, sp, ret addr, ds*/

typedef int jmp_buf[_JBLEN ]; /*всего 18 байтов*/

Функции setjmp и longjmp дают возможность выполнить нелокальный переход и обычно используются при обработке ошибок и исключительных ситуаций.

Вызов setjmp сохраняет текущее окружение в env. Последующий вызов longjmp восстанавливает сохраненное окружение и возвращает управление в точку после соответствующего вызова setjmp. Выполнение продолжается таким же образом, как если бы заданное value было возвращено при вызове setjmp.

Вызов функции longjmp должен быть выполнен после вызова функции setjmp. Управление не должно покидать функцию (в том смысле, что не должен выполняться возврат из этой функции), из которой был произведен вызов функции setjmp, в промежуток времени между вызовами функций setjmp и longjmp.

Замечание. При вызове setjmp не сохраняются значения регистровых переменных.

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

Функция не возвращает значения в точку вызова и не возвращает управления в точку вызова.

Смотри также

setjmp

_LROTL (ТС 2.0)

# include <stdlib.h>

unsigned long _lrotl(val, count);

unsigned long val;

int count;

Описание

Функция _lrotl выполняет циклический сдвиг данного значения val на count битов влево.

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

Возвращается значение — результат сдвига.

Смотри также

_lrotr

_LROTR (TC 2.0)

#include <stdlib.h>

unsigned long _lrotr(val, count);

unsigned long val;

int count;

Описание

Функция _lrotr выполняет циклический сдвиг данного значения val на count битов вправо.

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

Возвращается значение — результат сдвига.

Смотри также

_lrotl

LSEEK (ТС & MSC)

#include <io.h> /*используется только для описания функции*/

long lseek(handle, offset, origin);

int handle;

long offset;

int origin;

Описание

Функция lseek перемещает (внутренний) указатель файла, связанного с дескриптором handle (ввод/вывод нижнего уровня), на новое место, которое определяется смещением offset байт от origin.

Следующая операция с файлом начинается с нового места. Аргумент origin должен иметь одно из следующих значений:

SEEK_SET=0 Начало файла

SEEK_CUR=1 Текущая позиция указателя файла

SEEK_END=2 Конец файла

Функция lseek используется, чтобы переместить указатель в файле.

Указатель может быть перемещен за конец файла. Однако попытка переместить указатель на позицию до начала файла приведет к ошибке.

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

Смещение в байтах новой позиции указателя от начала файла.

Значение -1L сигнализирует об ошибке, при этом переменной errno присваивается одно из следующих значений:

EBADF — недействительный дескриптор файла handle

EINVAL — недействительное значение для origin, или позиция, определяемая смещением offset, указывает до начала файла

Для устройств типа терминала и принтера возвращаемое значение не определено.

Смотри также

fseek, tell

LTOA (ТС & MSC)

#include <stdlib.h> /*используется только для описания функции*/

char ltoa(value, string, radix);

long value;

char *string;

int radix;

Описание

Функция преобразует заданное значение value типа long int в символьную строку, завершающуюся нулевым символом, и помещает результат в символьный массив, адрес которого задается значением параметра string.

Значение аргумента radix определяет систему исчисления для представления value; это значение должно быть в пределах от 2 до 36. Если значение radix равно 10 и value отрицательно, первым символом в строку помещается знак '-'.

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

Указатель на строку.

Нет ошибочных кодов возврата.

Замечание. Область памяти, отводимой для string, должна быть достаточной, чтобы поместить возвращаемую строку. Функция может возвратить до 33 байтов.

Смотри также

itoa, ultoa

MALLOC (ТС & MSC & ANSI)

#include <stdlib.h> /*используется в СП ТС, MSC*/

#include <malloc.h> /*используется в СП MSC*/

#include <alloc.h> /*используется в СП ТС*/

void *malloc(n);

size_t n;

Описание

Библиотека языка Си предоставляет механизм распределения динамической памяти (heap). Этот механизм позволяет динамически (по мере возникновения необходимости) запрашивать из программы дополнительные области оперативной памяти.

В малых моделях памяти (tiny, small, medium) доступно для использования все пространство между концом сегмента статических данных программы и вершиной программного стека, за исключением 256-байтной буферной зоны непосредственно около вершины стека.

В больших моделях памяти (compact, large, huge) все пространство между стеком программы и верхней границей физической памяти доступно для динамического размещения памяти.

Функция malloc динамически распределяет блок памяти размером, как минимум, size байтов. (Блок может быть больше, чем size байтов, в результате выравнивания). Блок является выравненным для размещения объектов любого типа, т. е. можно не заботиться о выравнивании. Инициализация буфера не производится.

Имя типа size_t определяется следующим образом:

typedef unsigned size_t;

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

Указатель на выделенную область памяти.

Значение NULL, если нет достаточного количества доступной для распределения памяти.

Смотри также

free, halloc, hfree, calloc, realloc, farmalloc

MATHERR (TC & MSC)

#include <math.h>

int matherr(x);

struct exeption *x;

Описание

Функция matherr обрабатывает ошибки, сгенерированные функциями из математической библиотеки. Такие функции вызывают функцию matherr, когда обнаружена ошибка. Пользователь может задавать свою функцию matherr (для этого достаточно просто описать функцию с таким именем в своей программе), чтобы позаботиться о специальной обработке ошибок.

Когда ошибка встретилась в функции из математической библиотеки, функция matherr вызывается с аргументом-указателем на структуру типа exeption (определенную в math.h),

struct exception

{

int type;

char *name;

double arg1, arg2, retval;

};

Элемент type определяет тип ошибки и принимает одно из следующих значений, описанных в math.h:

DOMAIN — значение аргумента вне области определения

SING — особенность аргумента

OVERFLOW — переполнение

UNDERFLOW — потеря значимости

TLOSS — полная потеря значимости

PLOSS — частичная потеря значимости

Элемент name указывает на строку, содержащую имя функции, которая привела к ошибке. Элементы arg1 и arg2 устанавливаются в значения аргументов, которые привели к ошибке. (Если задан только один аргумент, он помещается в arg1.)

Элемент retval — возвращаемое значение по умолчанию для этой ошибки; пользователь может изменить возвращаемое значение.

Возвращаемое функцией matherr значение определяет, встретилась ли действительно ошибка. Если matherr возвратила ноль, печатается сообщение об ошибке и переменной errno присваивается соответствующее значение — код ошибки.

Если функция matherr возвращает ненулевое значение, сообщение об ошибке не печатается и значение переменной errno остается неизменным.

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

Значение 0, если встретилась ошибка.

Ненулевое значение, если все в порядке.

Смотри также

acos, asm, atan, atan2, bessel, cabs, cos, cosh, exp, hypot, log, pow, sin, sinh, sqrt, tan

_MEMAVL (MSC)

#include <malloc.h> /*используется только для описания функции*/

unsigned int _memavl();

Описание

Функция _memavl возвращает приблизительный размер в байтах памяти, доступной для динамического распределения в данном сегменте.

Эта функция может быть использована вместе с функциями calloc, malloc, или realloc в малой и средней моделях памяти и с функцией _nmalloc во всех моделях памяти.

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

Размер в байтах, как беззнаковое целое.

Смотри также

calloc, malloc, freect, realloc, stackavail

MEMCCPY (TC & MSC)

#include <memory.h> /*(MSC)*/

#include <mem.h> /*(TC*/

#include <string.h> /*(TC & MSC)*/

/*для использования функции достаточно указать один включаемый файл (любой)*/

char *memccpy(dest, src, С, cnt);

char *dest;

char *src;

int C;

unsigned cnt;

Описание

Функция memccpy копирует нуль или более байтов из символьного массива, адрес которого задается значением параметра src, в символьный массив, адрес которого задается значением параметра dest, до тех пор, пока не будет скопирован символ С или пока не будет скопировано cnt байтов.

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

Если символ С был скопирован, функция возвращает указатель на следующий байт за скопированным символом.

Значение NULL, если символ С не был скопирован.

Смотри также

memchr, memcmp, memcpy, memset

MEMCHR (ТС & MSC & ANSI)

#include <memory.h> /*(MSC)*/

#include <mem.h> /*<TC)*/

#include <string.h> /*(TC & MSC)*/

/*для использования функции достаточно указать один включаемый файл (любой)*/

char *memchr(buf, С, cnt);

char *buf;

int С;

unsigned cnt;

Описание

Функция memchr ведет поиск символа С в первых ent байтах символьного массива, адрес которого определяется значением параметра buf.

Поиск продолжается до тех пор, пока не будет найден символ С или пока не будет проверено cnt байтов.

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

Указатель на расположение С в buf.

Значение NULL, если символ С не найден в пределах первых cnt байтов массива.

Смотри также

memccpy, memcmp, memcpy, memset

MEMCMP (TC & MSC & ANSI)

#include <memory.h> /*(MSC)*/

#include <mem.h> /*(TC)*/

#include <string.h> /*(TC & MSC)*/

/*для использования функции достаточно указать один включаемый файл (любой)*/

int memcmp(buf1, buf2,cnt);

char *buf1;

char *buf2;

unsigned cnt;

Описание

Функция memcmp лексикографически сравнивает первые cnt байтов областей памяти, адреса которых определяются значениями параметров buf1 и buf2, и возвращает значение, определяющее соотношение содержимого областей:

Меньше 0, если содержимое buf1 меньше, чем buf2.

0, если содержимое buf1 идентично buf2.

Больше 0, если содержимое buf1 больше, чем buf2.

Смотри также

memccpy, memchr, memcpy, memset

MEMCPY (TC & MSC & ANSI)

#include <memory.h> /*(MSC)*/

#include <mem.h> /*(TC)*/

#include <string.h> /*(TC & MSC)*/

/*для использования функции достаточно указать один включаемый файл (любой)*/

char memcpy(dest, src, cnt);

char *dest;

char *src;

unsigned cnt;

Описание

Функция memcpy копирует cnt байтов из области, адрес которой определяется значением параметра src, в область, адрес которой определяется значением параметра dest. Если некоторые участки src и dest перекрываются, функция memcpy гарантирует, что байты в перекрывающемся участке скопируются раньше, чем будут перекрыты.

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

Значение параметра dest.

Смотри также

memccpy, memchr, memcmp, memset

MEMICMP (TC & MSC)

#include <memory.h> /*(MSC)*/

#include <mem.h> /*(TC*/

#include <string.h> /*(TC & MSO*/

/*для использования функции достаточно указать один включаемый файл (любой)*/

int memicmp(buf1, buf2, cnt);

char *buf1;

char *buf2;

unsigned cnt;

Описание

Функция memicmp лексикографически сравнивает первые cnt байтов областей памяти, адреса которых определяются значениями параметров buf1 и buf2, считая заглавные и прописные буквы эквивалентными. Функция возвращает значение, обозначающее соотношение содержимого buf1 и buf2:

Меньше 0 содержимое buf1 меньше buf2

0 содержимое buf1 идентично buf2

Больше 0 содержимое buf1 больше buf2

Смотри также

memccpy, memchr, memcmp, memcpy, memset

MEMMOVE (ТС & ANSI)

#include <mem.h>

#include <string.h>

/*для использования функции достаточно указать один включаемый файл (любой)*/

char memmove(dest, src, cnt);

char *dest;

char *src;

unsigned cnt;

Описание

Функция memmove копирует cnt байтов из символьного массива, адрес которого задается значением параметра src, в символьный массив, адрес которого задается значением параметра dest.

Если области src и dest перекрываются, функция memmove гарантирует, что байты в перекрывающемся участке скопируются раньше, чем будут перекрыты (копирование произойдет корректно).

Функция memmove полностью идентична функции memcpy.

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

Значение параметра dest.

Смотри также

memccpy, memchr, memcmp, memset

MEMSET (ТС & MSC & ANSI)

#include <memory.h> /*(MSC)*/

#include <mem.h> /*(TC)*/

#include <string.h> /*(TC & MSG)*/

/*для использования функции достаточно указать один включаемый файл (любой)*/

char *memset(dest, val, cnt);

char *dest;

int val;

unsigned cnt;

Описание

Функция memset присваивает значение val первым cnt байтам области памяти, адрес которой задается значением параметра dest.

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

Значение параметра dest.

Смотри также

memccpy, memchr, memcmp, memcpy

MKDIR (TC & MSC)

#include <direct.h> /*используется в системе программирования MSC*/

#include <dir.h> /*используется в системе программирования ТС*/

int mkdir(pathname);

char *pathname;

Описание

Функция mkdir создает новый каталог с именем, задаваемым символьной строкой, адрес которой определяется значением параметра pathname.

За один раз можно создать только один каталог, поэтому создается только каталог с последним именем (в последовательности пути по каталогам) в pathname.

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

Значение 0, если новый каталог был создан.

Значение -1, сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES — каталог не создан; заданное имя является именем существующего файла, каталога или устройства.

ENOENT — имя pathname не найдено.

Смотри также

chdir, rmdir

MKTEMP (TC & MSC)

#include <io.h> /*используется только для описания функции*/

char *mktemp(template);

char *template;

Описание

Функция создает уникальное имя файла посредством модификации заданного имени template. Аргумент template имеет форму

baseXXXXXX

base — это часть нового имени файла, задаваемая пользователем;

ХХХХХХ (шесть символов 'X') — часть имени, определяемая функцией mktemp.

Функция mktemp сохраняет префикс base и заменяет шесть X алфавитно-цифровым символом, за которым следует значение из 5 цифр. Пятицифровое значение есть уникальное число, определяющее вызванный процесс.

Алфавитно-цифровой символ есть цифра ноль ('0'), когда функция mktemp вызывается в первый раз с заданным именем template.

При последующих вызовах из того же процесса с тем же template mktemp проверяет, чтобы выяснить, было ли использовано предыдущее имя для создания файлов. Если файл не существует для заданного имени, mktemp возвращает это имя. Если файлы существуют для всех ранее возвращенных имен, функция mktemp создает новое имя, заменив алфавитно-цифровой символ в имени на следующую букву. Например, если первым возвращенным именем было "t012345" и это имя использовалось для создания файла, следующим возвращаемым именем будет "ta12345". При создании новых имен функция mktemp использует, как правило, символ '0' и буквы от 'а' до 'z'.

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

Указатель на модифицированное имя template.

Значение NULL, если строка template имеет плохой формат.

Замечание. Функция mktemp генерирует уникальные имена файлов, но не создает и не открывает файлы.

Смотри также

fopen, getpid, open

MK_FP (TC)

#include <dos.h>

void far *MK_FP(seg, ofs);

unsigned seg;

unsigned ofs;

Описание

Макрос MK_FP используется для составления четырехбайтового (far) указателя из его составляющих — адреса сегмента (значение параметра seg) и смещения в сегменте (значение параметра ofs).

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

Возвращается указатель типа far.

Смотри также

FP_OFF, FP_SEG

MODF (ТС & MSC & ANSI)

#include <math.h>

double modf(x, intptr);

double x;

double *intptr;

void movmem(dest, src, cnt);

char *dest;

char *src;

unsigned cnt;

Описание

Функция movmem копирует cnt байтов из области памяти, адрес которой определяется значением параметра src, в область памяти, адрес которой определяется значением параметра dest.

Если некоторые участки областей, на которые указывают значения параметров src и dest, перекрываются, функция movmem гарантирует, что байты в перекрывающемся участке скопируются раньше, чем будут перекрыты.

Функция movmem идентична функции memcpy, за исключением возвращаемого значения.

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

Функция не возвращает значения.

Смотри также

memccpy, memchr, memcmp, memset

_MSIZE (MSC)

#include <malloc.h> /*используется только для описания функции*/

unsigned _msize(ptr);

void *ptr;

Описание

Функция возвращает размер в байтах блока памяти, полученного по вызову calloc, malloc или realloc.

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

Размер в байтах как беззнаковое целое.

Смотри также

malloc

_NFREE (MSC)

#include <malloc.h> /*используется только для описания функции*/

void _nfree(ptr);

char near *ptr;

Описание

Функция _nfree освобождает блок памяти. Значение аргумента ptr указывает на блок памяти, ранее выделенный по вызову функции _nmalloc.

Число освобождаемых байтов равняется числу байтов, заданных в вызове функции _nmalloc, по которому было возвращено значение ptr.

После вызова функции _nfree освобожденный блок снова доступен для распределения.

Замечание. Попытка освободить область, не полученную посредством _nmalloc, может влиять на последующее распределение памяти и привести к ошибкам.

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

Функция не возвращает значения.

Смотри также

_nmalloc, free, malloc

_NMALLOC (MSC)

#include <malloc.h> /*используется только для описания функции*/

char near *_nmalloc (size);

unsigned size;

Описание

Функция _nmalloc получает блок памяти минимум size байтов в пределах текущего сегмента данных. (Блок может быть более чем nsize байтов в результате выравнивания.)

Изучите также описание функции malloc.

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

Указатель на полученный блок. Область памяти, на которую указывает возвращаемое значение, является выравненной для любого типа объектов. Чтобы получить указатель типа, отличного от char, необходимо использовать операцию явного преобразования типа.

Значение NULL, если нет достаточной доступной для распределения памяти.

Смотри также

_nfree, _nmsize, malloc, realloc

_NMSIZE (MSC)

#include <malloc.h> /*используется только для описания функции*/

unsigned _nmsize(ptr);

char near ptr;

Описание

Функция _nmsize возвращает размер в байтах блока памяти, полученного ранее при вызове _nmalloc.

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

Размер в байтах, как беззнаковое целое.

Смотри также

_ffree, _fmalloc, _fmsize, malloc, _msize, _nfree, _nmalloc

NOSOUND (TC 2.0)

#include <dos.h>

void nosound(void);

Описание

Функция nosound отключает устройство подачи звукового сигнала.

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

Функция не возвращает значения.

Смотри также

delay, sound

ONEXIT (MSC)

#include <stdlib.h>

onexit_t onexit(func);

onexit_t func;

Описание

Функция onexit принимает как аргумент адрес функции func, которая будет вызвана при нормальном завершении программы.

Тип onexit_t определяется в файле stdlib.h следующим образом:

typedef int(*onexit_t)();

Не более чем 32 функции могут быть зарегистрированы с помощью функции onexit; функция onexit возвращает значение NULL, если число функций превышает 32.

Функции, передающиеся onexit, не могут использовать параметры.

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

Указатель на функцию (значение параметра).

Возвращается значение NULL, если функция не может быть зарегистрирована как вызываемая при завершении программы.

Смотри также

exit, atexit

OPEN (ТС & MSC), _OPEN (TC)

#include <fcntl.h> /*файл содержит описания констант*/

#include <sys\stat.h> /*файл содержит описания констант*/

#include <sys\types.h> /*(MSC) файл содержит описания констант*/

#include <io.h> /*файл содержит прототип функции*/

int open(pathname, oflag[, pmode]);

char *pathname;

int oflag;

int pmode;

int _open(pathname, oflag);

char *pathname;

int oflag;

Описание

Функция open открывает файл (ввод/вывод нижнего уровня), имя которого задается строкой, адрес которой определяется значением аргумента pathname, и подготавливает файл для чтения или записи, как определено значением аргумента oflag.

Значение аргумента oflag является целым значением, сформированным комбинацией одной или более следующих констант, определенных в файле fcntl.h; когда задается более одной константы, они разделяются операциями ИЛИ (|).

Значение констант следующее:

О_APPEND Переместить указатель файла на конец файла перед каждой операцией записи.

О_CREAT Создать и открыть новый файл для записи; не дает результата, если файл уже существует.

O_EXCL Возвращает ошибочный код, если файл, определенный в pathname, уже существует. Применяется только вместе с O_CREAT.

О_RDONLY Открыть файл только для чтения; если этот флаг задан, ни O_RDWR, ни O_WRONLY не могут быть заданы.

О_RDWR Открыть файл для чтения и записи; если этот флаг задан, ни O_RDONLY, ни O_WRONLY не могут быть заданы.

O_TRUNC Открыть и сузить существующий файл до нулевой длины; файл должен иметь доступ для записи. Содержимое файла теряется.

O_WRONLY Открыть файл только для записи; если этот флаг задан, ни O_RDONLY, ни O_RDWR не могут быть заданы.

O_BINARY Открыть файл в двоичном режиме (смотри FOPEN).

О_ТЕХТ Открыть файл в текстовом режиме (смотри FOPEN).

Замечание. O_TRUNC полностью затирает содержимое существующего файла. Будьте с ним осторожны.

Режим открытия файла (текстовый или двоичный) при использовании функции open определяется по значению глобальной переменной _fmode (ее значением может быть одна из констант О_ТЕХТ или O_BINARY).

Чтобы открыть файл в другом режиме с помощью функции open, можно либо установить соответствующее значение переменной _fmode, либо открыть файл через вызов функции open с установленным атрибутом О_ТЕХТ или 0_BYNARY.

Аргумент pmode для функции open требуется только тогда, когда задано значение O_CREAT. Если файл существует, значение параметра pmode игнорируется. Иначе, значение параметра pmode определяет способ доступа к файлу, который устанавливается, когда новый файл закрывается впервые. Pmode есть целое значение, содержащее одну или обе константы S_IWRITE и S_IREAD, определенных в файле sys\stat.h. Когда определяются обе константы, они разделяются оператором ИЛИ(|).

Действие pmode следующее:

S_IWRITE Доступ для записи

S_IREAD Доступ для чтения

S_IREAD|S_IWRITE Доступ для чтения и записи.

Если доступ для записи не задан, файл открыт только для чтения. Под MS-DOS все файлы доступны для чтения; поэтому нет необходимости задавать только доступ для записи. Таким образом, режимы S_IWRITE и S_IREAD|S_IWRITE эквивалентны. Функция _open доступна только системе программирования ТС.

Режим открытия файла (текстовый или двоичный) при использовании функции _open всегда определяется по значению глобальной переменной _fmode (ее значением может быть одна из констант О_ТЕХТ или O_BINARY).

Для функции _open в рамках операционной системы MS-DOS версий более ранних, чем 3.0, допустимое значение параметра oflag может быть только О_RDONLY, О_WRONLY или O_RDWR.

Для версий ОС 3.0 и более поздних допустимы дополнительно следующие значения:

O_NOINHERIT — файл не должен наследоваться процессами-потомками

O_DENYALL — доступ к файлу только через текущий дескриптор

O_DENYWRITE — для других операций открытия этого файла разрешить только режим чтения

O_DENYREAD — для других операций открытия этого файла разрешить только режим записи

O_DENYNONE — сделать файл полностью разделяемым

Для системы программирования ТС в файле fcntl.h определены следующие константы:

#define О_RDONLY 1

#define O_WRONLY 2

#define O_RBWR 4

#define О_CREAT 0x0100

#define O_TRUNC 0x0200

#define O_EXCL 0x0400

#define _O_RUNFLAGS 0x0700

#define _О_EOF 0x0200 /*устанавливается, когда текстовый файл оканчивается символом <ctrl/Z>*/

#define O_APPEND 0x0800 /*Специальные признаки ОС MS-DOS*/

#define O_CHANGED 0x1000 /*пользователь не должен изменять эти биты*/

#define О_DEVICE 0x2000

#deftne O_TEXT 0x4000 /*преобразование CR-LF*/

#define O_BINARY 0x8000 /*нет преобразования CR-LF*/

/*параметры ОС MS-DOS версии 3.0 и более поздних*/

#define О_NOINHERIT 0x80

#define O_DENYALL 0x10

#define O_DENYWRITE 0x20

#define O_DENYREAD 0x30

#define O_DENYNONE 0x40

Для системы программирования MSC в файле fcntl.h определены следующие константы:

#define О_RDONLY 0x0000

#define O_WRONLY 0x0001

#define O_RDWR 0x0002

#define O_APPEND 0x0008

#define О_CREAT 0x0100

#define O_TRUNC 0x0200

#define O_EXCL 0x0400

#define О_TEXT 0x4000

#define O_BINARY 0x8000

#define О_RAW О_BINARY

#define О_NOINHERIT 0x0080

Отметим, что константа O_APPEND имеет разные значения в разных системах программирования, поэтому предпочтительнее использовать только мнемонические обозначения констант.

Посмотрите также описание функций creat и _creat.

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

Функции open и _open возвращают значение дескриптора для открытого файла.

Значение -1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES — заданное pathname является каталогом, или попытка открыть для записи файл, который открыт только для чтения.

EEXIST - определены флаги O_CREAT и O_EXECL, но файл уже существует.

EMFILE — нет больше доступных дескрипторов handle (слишком много открытых файлов).

ENOENT — файл или каталог на пути к нему не найдены.

Смотри также

access, chmod, close, creat, dup, dup2, fopen, sopen, umask

OUTP (MSC), OUTPORT (TC), OUTPORTB (TC)

Использование (MSC)

#include <conio.h> /*используется только для описания функции*/

int outp(port, value);

unsigned port;

int value;

Использование (ТС)

#include <dos.h>

void outport(int port, int word);

void outportb(int port, char byte);

Описание (MSC)

Функция outp записывает байт (значение параметра value) в выводной порт, определяемый значением параметра port. Значение параметра port может быть беззнаковым целым в пределах от 0 до 65535; значение параметра value может быть целым от 0 до 255.

Описание (ТС)

Функция outport записывает слово word в порт вывода port.

Функция outportb записывает байт byte в порт вывода port.

Примечание (ТС). outport и outportb — функции, если не включен файл dos.h. outport и outportb — макросы, вызывающие вставку в текст программы соответствующей машинной инструкции, если включен файл dos.h.

Примечание (ТС 2.0). Для переносимости программ в dos.h вставлено макроопределение:

#define outp(a.b) outportb((a),(b))

Возвращаемое значение (MSC)

Значение value.

Нет кодов ошибок.

Возвращаемое значение (ТС)

Функция не возвращает значения.

Смотри также

inp

PARSFNM (ТС)

#include <dos.h>

char *parsfnm(cmdline, fcbptr, option);

char *cmdline;

struct fcb *fcbptr;

int option;

Описание

Функция parsfnm разбирает строку, обычно командную строку, на которую указывает cmdline, для выделения имени файла. Имя файла будет размещено в структуре fcbptr. Функция использует системный вызов MS-DOS 0x29 для разбора имени файла.

Смотрите Ваш MS-DOS Programmer's Reference Manual для детального перечисления возможных значений параметра option.

Отметим лишь, что значение option соответствует значению регистра AL указанного системного вызова.

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

Если вызов прошел удачно, то функция возвращает указатель следующего байта в строке после имени файла, в противном случае функция возвращает значение NULL.

РЕЕК, РЕЕКВ (ТС)

#include <dos.h>

int peek(unsigned segment, unsigned offset);

int peekbf unsigned segment, unsigned offset);

Описание

Функции peek и peekb используются для доступа к памяти через значения адреса сегмента и смещения.

Если файл dos.h включен, то это макросы, если нет, функции.

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

Функция peek возвращает значение слова памяти по адресу, заданному параметрами segment (адрес сегмента) и offset (смещение).

Функция peekb возвращает значение байта памяти по адресу, заданному параметрами segment (адрес сегмента) и offset (смещение).

Смотри также

poke, pokeb

PERROR (ТС & MSC & ANSI)

#include <stdlib.h> /*используется только для описания функции*/

void perror(string);

char *string;

int errno;

int sys_nerr;

char sys_errlist[ sys_nerr];

Описание

Функция perror печатает сообщение об ошибке в стандартный поток для вывода сообщений об ошибках stderr. Сначала печатается аргумент-строка (string), за которой следует двоеточие, затем системное сообщение об ошибке, соответствующее значению переменной errno, и символ перевода строки ('\n').

Код ошибки находится в переменной errno, которая должна быть описана на верхнем уровне (программист не должен сам ее описывать, она будет взята из стандартной библиотеки языка Си). Системное ошибочное сообщение доступно через переменную sys_errlist, которая является массивом сообщений, упорядоченных по соответствующим кодам ошибок.

Функция perror печатает сообщение, используя значение переменной errno как индекс по массиву sys_errlist.

Значение переменной sys_nerr устанавливается как максимальное число элементов в sys_errlist массиве. Для правильной работы функция perror должна быть вызвана сразу после библиотечной функции, которая возвратила код ошибки, иначе значение переменной errno может быть затерто при последующих вызовах.

Замечание. Под ОС MS-DOS некоторые значения errno из списка errno.h не используются.

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

Функция не возвращает значения.

Смотри также

clearerr, ferror, strerror

POKE, POKEB (ТС)

#include <dos.h>

int poke(unsigned segment, unsigned offset, int value);

int pokeb(unsigned segment, unsigned offset, char value);

Описание

Функции poke и pokeb используются для доступа к памяти через значения адреса сегмента и смещения.

Если файл dos.h включен, то это макросы, если нет, функции.

Функция poke записывает значение типа целое (value) по адресу, заданному параметрами segment (адрес сегмента) и offset (смещение).

Функция pokeb записывает байт-значение (value) по адресу, заданному параметрами segment (адрес сегмента) и offset (смещение).

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

Функции poke и pokeb не возвращают значения.

Смотри также

peek, peekb

POLY (ТС)

#include <math.h>

double poly(x, n, с);

double x;

int n;

double c[];

Описание

Функция poly получает значение в точке х для полинома степени n, заданного коэффициентами c[0], c[1], ..., с[n].

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

Функция возвращает значение полинома.

POW (ТС & MSC & ANSI)

#include <math.h>

double pow(x, у);

double x;

double y;

Описание

Функция pow вычисляет значение х в степени у.

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

Значение х в степени у.

Значение 1, если значение у нулевое.

Значение HUGE, если значение х равно 0 и у отрицательно; при этом переменной errno присваивается значение ERANGE.

Значение 0, если х отрицательное и у не целое; при этом переменной errno присваивается EDOM и печатается сообщение об ошибке DOMAIN в поток stderr.

Значение HUGE, отрицательное или положительное, если произошло переполнение; при этом переменной errno присваивается значение ERANGE.

Смотри также

exp, log, sqrt, pow10

POW10 (ТС)

#include <math.h>

double pow(p);

int p;

Описание

Функция pow10 вычисляет значение 10 в степени р.

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

Значение 10 в степени р. Вычисление результата производится с двойной точностью. Все значения аргумента принимаются как допустимые, хотя возможны ситуации переполнения и потери точности.

Смотри также

pow, exp, log, sqrt

PRINTF (ТС & MSC & ANSI)

#include <stdio.h>

int printf(format_string[, argument...]);

char *format_string;

Описание

Функция printf печатает символы и формирует и печатает задаваемые аргументами значения в стандартный выводной поток stdout (ввод/вывод верхнего уровня). Функция printf имеет переменное число параметров.

Строка описания формата вывода, адрес которой задается значением единственного обязательного параметра format_string, состоит из обычных символов, специальных управляющих последовательностей символов (escape-последовательностей) и, если за параметром format_string следуют еще дополнительные аргументы, спецификаций полей формата вывода по одному для каждого дополнительного аргумента.

Обычные символы и escape-последовательности просто копируются в поток stdout в порядке их появления. Например, оператор

printf("Первая строка\n\t\t Вторая строка\n");

выводит:

Первая строка

Вторая строка

Если за параметром format_string следуют аргументы arguments, то format_string должна содержать спецификации форматов, определяющих выводной формат для этих аргументов.

Спецификации форматов начинаются с символа процента ('%') и описываются ниже.

Строка описания формата (адрес которой задается значением параметра format_string) прочитывается слева направо. Когда встречается первая спецификация формата, значение первого аргумента после параметра format_string преобразуется и выводится согласно спецификации формата. Вторая спецификация формата преобразует и выводит второй аргумент, и, таким образом, обработка продолжается до конца format_string. Если задано больше аргументов, чем спецификаций формата, лишние аргументы игнорируются.

Результат будет неопределенным, если нет достаточного количества аргументов для всех спецификаций форматов. Спецификация формата имеет следующую форму:

%[flags][width][.precision][F|N|h|l|L]type

Спецификация формата не содержит внутри себя пробелов. Каждое поле спецификации формата есть одиночный символ или число, означающие необязательный параметр формата. Символ type, который появляется после последнего поля формата, определяет, как будет интерпретироваться соответствующий данному описанию формата аргумент: как символ, строка или число (смотри таблицу 10.2).

Самая простая спецификация формата содержит только знак процента и символ type (например, "%s").

Необязательные поля управляют другими параметрами форматирования:

flags выравнивание выводных символов, управление печатью знаковых символов ('+' и '-'), пробелов, десятичных точек, восьмеричных и шестнадцатеричных префиксов (смотри таблицу 10.3)

width минимальное число выводимых символов

precision максимальное число символов, которые будут напечатаны, для всех или части выводных полей; или минимальное число цифр, которые будут печататься, для значения целого (смотри таблицу 10.4).

F, N префиксы, которые позволяют пользователю не принимать во внимание способы адресации и используемую модель памяти:

F используется в малой модели для печати значений, которые описаны как far

N используется в средней, большой и верхней моделях для значений near.

префиксы F и N должны быть использованы только с типами "%s" и "%р" (в системе программирования ТС также с типом "%n"), так как они имеют смысл только с аргументами, задаваемыми как указатель.

h, l размер аргумента:

h используется как префикс с целыми типами d, i, o, u, x и X, чтобы определить, что аргумент является коротким целым (short int).

l используется как префикс с типами d, i, o, u, x и X, чтобы определить, что аргумент является длинным целым (long int); также используется как префикс с типами c, e, f, g или G, чтобы показать, что аргументы имеют тип double, а не float.

L (только для системы программирования ТС версии 2.0)

Используется как префикс с типами d, i, o, u, x и X, чтобы определить, что аргумент является длинным целым (long int); также используется как префикс с типами c, e, f, g или G, чтобы показать, что аргументы имеют тип long double, а не double.

Если за символом процента ('%') следует символ, который не является полем формата, этот символ просто копируется в stdout.

Таблица 10.2.

Символы type

Символ Тип аргумента Выводной формат
d целое десятичное целое со знаком
i целое десятичное целое со знаком
u целое десятичное целое без знака
о целое восьмеричное целое без знака
x целое шестнадцатеричное целое без знака, для обозначения шестнадцатеричных цифр используются символы"abcdef"
X целое шестнадцатеричное целое без знака, для обозначения шестнадцатеричных цифр используются символы "ABCDEF"
f с плавающей точкой Значение со знаком, имеет форму [-]dddd.dddd, где dddd — одна и более десятичных цифр. Число цифр до десятичной точки зависит от величины значения, а число цифр после десятичной точки зависит от требуемой точности.
e с плавающей точкой Значение со знаком имеет форму [-]d.dddde[sign]ddd, где d — одна десятичная цифра, dddd — одна или более десятичных цифр, ddd — ровно три десятичные цифры, и sign — это '+' или '-'.
Е с плавающей точкой Идентично 'е' формату, но знак 'е' заменяется на 'Е'.
g с плавающей точкой Значение со знаком печатается в формате 'f' или 'е', однако является более компактным для заданного значения и точности precision (смотри ниже). Формат 'е' используется только тогда, когда экспонента значения меньше, чем -4, или больше, чем precision. Незначащие нули отбрасываются, десятичная точка печатается только в том случае, если одна или более цифр следуют за ней.
G с плавающей точкой Идентично формату 'g', но символ 'Е' используется для обозначения экспоненты вместо 'е'.
с символ Одиночный символ.
s строка Символы печатаются до первого нулевого символа ('\0') или до тех пор, пока не будет напечатано precision символов.
n указатель на целое В ячейку памяти, адрес которой задается как аргумент, соответствующий данной спецификации формата, записывается число символов, выведенных в выводной поток к текущему моменту в данном вызове функции printf.
    Для системы программирования MSC:
p far-указатель Печатает адрес, заданный аргументом, в виде хххх:уууу, где хххх — адрес сегмента, уууу — смещение, цифры х и у — шестнадцатеричные цифры; %Np печатает только смещение адреса, уууу.
    Для системы программирования ТС:
p указатель Печатает адрес, заданный аргументом, в формате, соответствующем типу указателя по умолчанию в текущей модели памяти: — far-указатели печатаются в виде хххх:уууу, где хххх — адрес сегмента, уууу — смещение, цифры х и у — шестнадцатеричные цифры; — для near-указателей печатается только смещение, уууу. Чтобы напечатать значение указателя, тип которого отличен от типа по умолчанию, необходимо использовать спецификаторы формата "%Fp" и "%Np"

Таблица 10.3

Символы flag

Флаг Действие флага По умолчанию
- Результат, если количество символов для вывода меньше указанного размера поля (width), выравнивается по левой границе (дописываются пробелы справа). Выравнивание по правой границе
+ Добавляет префикс знака ('+' или '-') для выводного значения, если выводное значение является знаковым типом. Знак печатается только для отрицательных значений.
пробел Добавляет префикс пробел для выводного значения, если выводное значение со знаком и положительно; ' + ' преобладает над флагом ' ', если указаны оба. Пробел не добавляется.
# Когда используется формат о, х или X, флаг '#' добавляет префикс ненулевому выводному значению: 0, 0х или 0Х соответственно. Когда используется формат е, Е или f, выводное значение будет содержать десятичную точку во всех случаях. Когда используется формат g или G, выводное значение будет содержать десятичную точку и незначащие нули не подавляются. Нет префикса.

Поле width является неотрицательным десятичным целым, управляющим минимальным числом символов, выводимых по данному описателю формата. Если число символов в выводном значении меньше, чем определено в width, пробелы добавляются слева или справа (в зависимости от того, определен ли флаг '-') до тех пор, пока не будет достигнут размер width.

Спецификация width никогда не означает обрезание значащих символов в выводимом значении; если число символов в выводном значении больше, чем определено в width, или width не задано, печатаются все символы (возможно, согласно указаниям спецификации precision).

Спецификация width может быть задана как символ звездочка ('*'); в этом случае сам текущий аргумент из списка аргументов (который должен иметь тип int) предполагается как значение, задающее минимальное количество выводимых символов. Этот аргумент должен предшествовать в списке аргументов значению, которое будет форматироваться и выводиться по текущему описателю формата.

Спецификация precision является неотрицательным десятичным числом, следующим за точкой ('.'), она определяет точное число символов, которые должны быть напечатаны, или место десятичной точки.

Спецификация precision может сузить выводное значение или округлить в случае значения с плавающей точкой.

Спецификация precision может быть задана символом звездочка ('*'); в этом случае сам аргумент из списка аргументов предполагается как значение precision. Аргумент precision должен предшествовать в списке аргументов значению, которое будет форматироваться.

Интерпретация значения precision в зависимости от заданного типа type показана в таблице 10.4.

Таблица 10.4

Туре Действие По умолчанию
d Precision определяет минимальное число цифр, которые будут напечатаны. Если число цифр в аргументе меньше, чем precision, выводное значение добавляется слева нулями. Значение не сжимается, когда число цифр превышает precision. Если precision есть 0, или отсутствует, или точка появилась без числа, следующего за ним, precision устанавливается в 1.
i
u
0
x
X
e Precision определяет число цифр, которые будут напечатаны после десятичной точки. Последняя напечатанная цифра округляется. По умолчанию precision равно 6. Если precision равно 0, десятичная точка не печатается.
Е
f
g Precision определяет максимальное число значимых цифр, которые будут напечатаны. Все десятичные цифры печатаются.
G
с Нет действия. Символ печатается.
s Precision определяет максимальное число символов, которые будут напечатаны. Лишние символы не печатаются. Символы печатаются до тех пор, пока не будет достигнут символ конца строки ('\0').

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

Число напечатанных символов.

Смотри также

fprintf, scanf, sprintf, vfprintf, vprintf, vsprintf

PUTC, PUTCHAR (TC & MSC & ANSI)

#include <stdio.h>

int putc (sim, stream);

int sim;

FILE *stream;

int putchar(sim);

int sim;

Описание

Функция putc записывает одиночный символ, код которого задается значением параметра sim, в выводной поток, определяемый значением параметра stream, в текущую позицию (ввод/вывод верхнего уровня).

Вызов функции putchar(sim) идентичен вызову функции putc(sim, stdout).

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

Код выведенного символа.

Значение EOF, если произошла ошибка; необходимо использовать функцию ferror, чтобы определить, какая произошла ошибка.

Замечание. Функции putc и putchar сходны с функциями fputc и fputchar, но являются на самом деле макросами, а не функциями.

Смотри также

fputc, fputchar, getc, getchar

PUTCH (TC & MSC)

#include <conio.h> /*используется только для описания функции*/

void putch(sim);

int sim;

Описание

Функция putch записывает символ, код которого задается значением параметра sim, на консольный терминал.

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

Функция не возвращает значения.

Смотри также

cprintf, getch, getche, putc

PUTENV (TC & MSC)

#include <stdlib.h> /*используется только для описания функции*/

int putenv(envstring);

char *envstring;

Описание

Функция putenv добавляет новые переменные окружения или модифицирует существующие переменные окружения.

Переменные окружения (это переменные оболочки операционной системы MS-DOS) определяют окружение, в котором выполняется процесс (например, можно задать последовательность каталогов, в которых надо искать файл с выполняемым кодом при запуске программы на выполнение).

Значение аргумента envstring определяет адрес строки (массива символов), следующего вида:

varname=string

varname — имя переменной окружения, которая будет добавлена или модифицирована;

string — новое значение переменной.

Если varname уже существует в окружении, ее значение будет string; иначе, новое значение string будет добавлено в окружение. Переменная может быть установлена в пустое значение, если string — пустая строка.

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

Значение 0, если операция выполнена успешно. Значение -1 сигнализирует об ошибке.

Замечание. Функции getenv и putenv используют глобальную переменную environ, чтобы получить доступ к таблице окружения. Функция putenv может изменить значение переменной environ таким образом, что сделает неправильным (устаревшим) значение аргумента envp для функции main.

Смотри также

getenv

PUTS (ТС & MSC & ANSI)

#include <stdio.h>

int puts(string);

char *string;

Описание

Функция puts записывает строку, адрес которой определяется значением параметра string, в стандартный выводной поток stdout (ввод/вывод верхнего уровня), добавляя в завершение символ конца строки ('\n').

Выводятся символы из строки, пока не встретится завершающий строку нулевой символ ('\0').

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

Последний записанный символ, который всегда является символом '\n'.

Значение EOF сигнализирует об ошибке.

Смотри также

fputs, gets, printf

PUTW (TC & MSC)

#include <stdio.h>

int putw(binint, stream);

int binint;

FILE *stream;

Описание

Записывает двоичное значение типа int в текущую позицию заданного выводного потока stream (ввод/вывод верхнего уровня).

Функция putw не производит выравнивания символов в файле.

Замечание. Функция putw предназначалась первоначально для работы с ранними библиотеками. Могут возникнуть проблемы с переносом программ, использующих эту функцию, так как размер int и старшинство байтов в int различаются при переходе от системы к системе.

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

Записанное значение.

Значение EOF сигнализирует об ошибке; необходимо использовать функцию ferror, чтобы определить, какая встретилась ошибка.

Смотри также

getw

QSORT (ТС & MSC & ANSI)

#include <search.h> /*используется только для описания функции*/

void qsort(base, num, width, compare);

char *base;

unsigned num, width;

int(*compare)();

Описание

Функция qsort выполняет алгоритм быстрой сортировки, чтобы отсортировать массив из num элементов, каждый из которых имеет размер width байт.

Значение аргумента base задает адрес сортируемого массива. Функция qsort переупорядочивает этот массив.

Значение аргумента compare задает адрес предполагаемой пользователем функции сравнения элементов массива. Функция qsort будет вызывать функцию, адрес которой задается значением аргумента compare, один или более раз в течение сортировки, передавая ей как параметры указатели на два элемента массива при каждом вызове.

Функция, адрес которой задается значением аргумента compare, должна сравнивать элементы, потом возвращать одно из следующих значений:

Меньше 0 элемент 1 меньше элемента 2;

0 элемент 1 эквивалентен элементу 2;

Больше 0 элемент 1 больше элемента 2;

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

Функция не возвращает значения.

Смотри также

bsearch, lsearch

RAISE (ТС 2.0 & MSC 5.1 & ANSI)

#include <signal.h>

int raise(sig);

int sig;

Описание

Функция raise возбуждает программный сигнал (пользовательское прерывание выполняемого процесса) и вызывает функцию обработки, связанную с этим сигналом. Если пользователь не установил для данного сигнала свою функцию обработки с помощью функции signal, выполняются действия, принятые по умолчанию для данного сигнала.

Замечание. В системе программирования ТС версии 1.5 используется для тех же целей функция gsignal.

За подробностями обращайтесь к описанию функции signal.

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

Значение 0, если операция выполнена успешно. Ненулевое значение, если произошла ошибка.

Смотри также

signal, abort, exit, _exit, _fpreset, spawnl, spawnle, spawnlp, spawnv, spawnve, spawnvp

RAND (TC & MSC & ANSI)

#include <stdlib.h> /*используется только для описания функции*/

int rand();

Описание

Функция rand возвращает псевдослучайное целое значение в пределах от 0 до 32767.

Перед первым обращением датчик случайных чисел надо проинициализировать посредством вызова функции srand.

Используется конгруэнтный датчик случайных чисел с периодом 232.

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

Случайное число.

Нет ошибочных кодов возврата.

Смотри также

srand, random

RANDBRD, RANDBWR (TC)

#include <dos.h>

int randbrd(fcbptr, recent);

struct fcb *fcbptr;

int recent;

int randbwr(fcbptr, recent);

struct fcb *fcbptr;

int recent;

Описание

Функция randbrd (random block read) читает recent записей, используя FCB-блок (блок управляющей информации о файле в формате операционной системы MS-DOS), адрес которого определяется значением параметра fcbptr.

Считывается заданное количество записей по адресу области передачи данных диска dta (смотри описание функции setdta).

Функция randbrd использует системный вызов 0x27 ОС MS-DOS.

Функция randbwr записывает recent записей, используя FCB-блок, адрес которого определяется значением параметра fcbptr. Функция randbwr использует системный вызов 0x28 ОС MS-DOS.

В файле dos.h определяется тип структуры fcb:

struct fcb

{

char fcb_drive; /*устройство 0 = по умолчанию, 1 = 'A', 2 = 'B'*/

char fcb_name [8]; /*имя файла*/

char fcb_ext[3]; /*расширение файла*/

short fcb_curblk; /*текущий номер блока*/

short fcb recsize; /*размер логической записи в байтах*/

long fcb_filsize; /*размер файла в байтах*/

short fcb date; /*дата последней модификации файла*/

char fcb_resv[10]; /*поле, зарезервированное ОС*/

char fcb_currec; /*текущая запись в блоке*/

long fcb_random; /*номер записи для доступа*/

};

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

Значение 0 — все записи считаны или записаны.

Значение 1 — для записи — нет свободного места (запись не записывается), для чтения — конец файла совпал с концом последней считанной записи.

Значение 2 — считываемая/записываемая запись имеет адрес, превышающий 0xFFFF (считано/записано записей столько, сколько можно).

Значение 3 — для чтения — конец файла встретился до окончания считывания последней записи.

Смотри также

getdta, setdta

RANDOM, RANDOMIZE (TC 2.0)

#include <stdlib.h>

#include <time.h> /*только для функции randomize*/

int random(int num);

void randomize(void);

Описание

Функция random возвращает псевдослучайное целое значение в пределах от 0 до значения num-1.

Для инициализации датчика случайных чисел необходимо использовать функцию randomize.

Замечание 1. Соответствующие функции есть в системе программирования Turbo-Pascal

Замечание 2. Функции random и randomize реализуются как макроопределения

#define random(num) (rand()%(num))

#define randomize() srand ((unsigned)time(NULL))

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

Функция random возвращает случайное число в диапазоне от 0 до num-1.

Функция randomize не возвращает значения.

Смотри также

rand, srand

READ (ТС & MSC), _READ (ТС)

#include <io.h> /*используется только для описания функций*/

int read(handle, buffer, count);

int handle;

char *buffer;

unsigned int count;

int _read(handle, buffer, count); /*функция _read доступна только в системе программирования ТС*/

int handle;

char *buffer;

unsigned int count;

Описание

Функция read пытается прочитать count байтов из файла, связанного с дескриптором handle (ввод/вывод нижнего уровня), в область памяти, адрес которой определяется значением параметра buffer.

Операция чтения начинается с текущей позиции (внутреннего) указателя файла, связанного с заданным файлом. После чтения указатель файла указывает на следующий непрочитанный символ.

Если файл открыт в текстовом режиме, последовательности символов <CR><LF> преобразуются в символ <LF> при вводе. Кроме того, символ <CTRL/Z> интерпретируется как символ конца файла при вводе. Для файлов, открываемых на чтение или чтение/запись, по возможности происходит проверка и удаление символов <CTRL/Z> (это необходимо для корректной работы функции fseek).

В двоичном режиме перечисленные выше преобразования не производятся. Функция _read доступна только в системе программирования ТС.

В отличие от функции read, функция _read — это прямое обращение к системному вызову операционной системы, не выполняются преобразования, связанные с работой с файлом в текстовом режиме.

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

Функции read и _read возвращают число действительно прочитанных символов, которое может быть меньше, чем значение count, если в файле оставалось меньше байтов, чем значение count, или файл был открыт в текстовом виде (смотри ниже).

Функции возвращают значение 0, если была попытка прочитать конец файла.

Функции возвращают значение -1, если произошла ошибка; при этом переменной errno присваивается одно из значений:

EVADF Заданное значение handle недействительно; или файл не был открыт для чтения; или файл защищен (для ОС MS-DOS версии 3.0 и выше)

Если было прочитано более 32 Кбайтов (максимальный размер для int), возвращаемое значение должно быть типа unsigned int. Однако максимальное число байтов, которые могут быть прочитаны из файла за одно обращение к функции read или _read, равно 65534, так как значение 65535 (0xffff) является представлением значения -1 и должно интерпретироваться как ошибка.

Если файл был открыт в текстовом виде, возвращаемое значение для функции read может не соответствовать числу действительно прочитанных байтов. Это происходит потому, что каждая комбинация символов <возврат-каретки><новая-строка> (<CR><LF>) заменяется символом новой строки <LF> и только этот символ засчитывается в возвращаемое значение.

(ТС) Также не пропускается и не учитывается в текстовом режиме чтения из файла символ <CTRL/Z>.

Смотри также

creat, fread, open, write, _creat, _open, _write

REALLOC (TC & MSC & ANSI)

#include <malloc.h> /*используется в системе программирования MSC*/

#include <stdlib.h> /*используется в системе программирования ТС*/

#include <alloc.h> /*используется в системе программирования ТС*/

char *realloc(ptr, size);

char *ptr;

unsigned *size;

Описание

Функция realloc изменяет размер области памяти, выделенной посредством вызова функции malloc или calloc.

Значение аргумента ptr определяет адрес области. Значение аргумента size задает новый размер области в байтах. Содержимое блока не изменяется, за исключением области в диапазоне между новым и старым размерами.

(MSC) Аргумент ptr при вызове функции realloc может также указывать на блок, который был освобожден только что (с помощью функции free или hfree), пока не будет вызвана одна из функций calloc, malloc, halloc или realloc.

(ТС) Если аргумент ptr равен нулю, realloc работает как malloc.

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

Указатель на переопределенный блок памяти.

Значение NULL, если нет достаточно доступной памяти для расширения блока до заданного размера size, при этом исходный блок освобождается.

(ТС) Возвращается значение NULL, если значение аргумента size равно 0.

Память, на которую указывает возвращаемое значение, является выравненной для объектов любого типа. Чтобы получить указатель отличного от типа char*, его необходимо преобразовать.

Смотри также

calloc, free, halloc, malloc

REMOVE (TC 2.0 & MSC & ANSI)

#include <io.h> /*используется в системе программирования MSC*/

#include <stdio.h> /*используется в системах программирования MSC и ТС*/

int remove(pathname);

char *pathname;

Описание

Функция remove удаляет файл, имя которого определяется строкой, адрес которой задается значением параметра pathname.

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

Значение 0, если удаление прошло успешно.

Значение -1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES — имя пути определяет каталог или файл, открытый только для чтения.

ENOENT — файл или путь не найдены.

Смотри также

close, unlink

RENAME (ТС & MSC & ANSI)

#include <io.h> /*используется в системе программирования MSC*/

#include <stdio.h> /*используется в системах программирования MSC, TC*/

int rename(oldname, newname);

char *oldname;

char *newname;

Описание

Функция rename переименовывает файл или каталог, имя которого определяется символьной строкой, адрес которой задается значением параметра oldname, давая файлу новое имя, определяемое строкой, адрес которой задается значением параметра newname.

Строка, адрес которой задается значением параметра oldname, должна определять путь существующего файла или каталога.

Строка, адрес которой задается значением параметра newname, не должна определять имя существующего файла или каталога.

Функция rename может быть использована, чтобы переместить файл из одного каталога в другой, задав другое имя пути в newname.

Однако файлы не могут быть перемещены с одного устройства на другое (например, с "А:" на "В:").

Каталоги могут только переименовываться.

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

Значение 0, если переименование прошло успешно.

Ненулевое значение сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES - Файл или каталог, определенный в newname, уже существует или не может быть создан (неправильный путь); или oldname является каталогом, a newname определяет другой путь.

ENOENT — файл или путь, определенные в oldname, не найдены.

EXDEV — попытка переместить файл на другое устройство.

Смотри также

creat, fopen, open

REWIND (TC & MSC & ANSI)

#include <stdio.h> /*используется только для описания функции*/

void rewind(stream);

FILE *stream;

Описание

Функция rewind перемещает (внутренний) указатель файла, связанного с потоком stream (высокоуровневый ввод/вывод), на начало файла.

Вызов функции rewind(stream) эквивалентен вызову функции fseek(stream, 0L, SEEK_SET), за исключением того, что функция rewind очищает признак конца файла и признак ошибки, а функция fseek этого не делает.

Кроме того, функция fseek возвращает значение, которое обозначает, был ли указатель успешно перемещен, a rewind не возвращает такого значения.

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

Функция не возвращает значения.

Смотри также

fseek, ftell

RMDIR (TC & MSC)

#include <direct.h> /*используется в системе программирования MSC*/

#include <dir.h> /*используется в системе программирования ТС*/

int rmdir(pathname);

char *pathname;

Описание

Функция rmdir удаляет каталог, имя которого задается строкой, адрес которой определяет значение параметра pathname.

Каталог должен быть пустым, не может быть текущим рабочим каталогом или корневым каталогом.

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

Значение 0, если каталог успешно удален.

Значение -1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES — заданное имя пути не является каталогом;

или каталог не пустой; или каталог является текущим рабочим каталогом или корневым каталогом.

ENOENT — имя пути не найдено.

Смотри также

chdir, mkdir

RMTMP (MSC)

#include <stdio.h>

int rmtmp();

Описание

Функция rmtmp используется для уничтожения всех временных файлов в текущем каталоге.

Функция rmtmp уничтожает только те файлы, которые были созданы посредством функции tmpfile.

Функция должна быть использована только в тех каталогах, в которых были созданы временные файлы.

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

Число закрытых и удаленных временных файлов.

Смотри также

flushall, tmpfile, tmpnam

_ROTL (TC 2.0)

#include <stdlib.h>

unsigned _rotl(val, count);

unsigned val;

int count;

Описание

Функция _rotl выполняет циклический сдвиг данного значения val на count битов влево.

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

Возвращается значение — результат сдвига.

Смотри также

_rotr, _lrotl

_ROTR (TC 2.0)

#include <stdlib.h>

unsigned _rotr(val, count);

unsigned val;

int count;

Описание

Функция _rotr выполняет циклический сдвиг данного значения val на count битов вправо.

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

Возвращается значение — результат сдвига.

Смотри также

_rotl, _lrotr

SBRK (ТС & MSC)

#include <malloc.h> /*(MSC), используется только для описания функции*/

#include <alloc.h> /*(ТС), используется только для описания функции*/

char *sbrk(incr);

int incr;

Описание

Функция sbrk изменяет значение глобальной переменной break, соответствующим образом изменяя размер области памяти, отведенной для данного процесса. Значение переменной break определяет адрес первого байта оперативной памяти, расположенного за областью, отведенной программе в оперативной памяти.

Функция sbrk добавляет значение параметра incr к переменной break; размер памяти, получаемой процессом, соответственно изменяется. Заметим, что значение incr может быть отрицательным, в этом случае область памяти процесса уменьшается на incr байтов.

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

Старое значение переменной break.

Значение -1 обозначает, что нет достаточной доступной памяти; при этом переменной errno присваивается значение ENOMEM.

Замечание (MSC). В программах компактной, большой и высшей модели памяти функция sbrk не приводит к результату.

Смотри также

calloc, free, malloc, realloc, keep

SCANF (TC & MSC & ANSI)

#include <stdio.h>

int scanf(format_string[, argument...]);

char *format_string;

Описание

Функция scanf читает данные из стандартного вводного потока stdin (высокоуровневый ввод/вывод) в переменные, адреса которых задаются аргументами arguments. Функция имеет переменное число параметров.

Значение первого параметра — format_string задает адрес строки, которая управляет интерпретацией элементов ввода (вводных полей). Каждый последующий аргумент должен быть указателем на переменную типа, соответствующего типу, определенному очередным описателем формата элемента ввода в строке, адрес которой задается значением параметра format_string.

Строка описания формата ввода может содержать:

— Пробельные символы (пробел (' '), табуляция ('\t') или символ новой строки ('\n')). Если пробельный символ встретится в format_string, то с этого момента пробельные символы до первого символа, не являющегося пробельным, считываются из потока ввода, но не участвуют в присваиваниях значений переменным (т.е. попросту игнорируются).

— Печатные символы — все прочие ASCII-символы, за исключением символа процента ('%'). Если печатные символы встречаются в format_string, то из потока ввода считываются символы, которые не участвуют в выработке присваиваемых переменным значений, но которые должны соответствовать печатным символам, встретившимся в format_string. Если последовательность печатных символов из потока ввода не соответствует последовательности печатных символов в format_string, работа функции scanf завершается.

— Спецификации формата, которые определяются знаком процента ('%'). Спецификация формата заставляет scanf прочитать и преобразовать символы на входе в значение определяемого типа. Значение присваивается переменной, адрес которой указан в списке аргументов.

Строка, адрес которой задается значением параметра format_string, прочитывается слева направо.

Когда встречается первая спецификация формата, значение первого входного поля преобразуется согласно спецификации формата и записывается по адресу, определяемому значением первого параметра после параметра format_string. Согласно второй спецификации формата второе входное поле преобразовывается и помещается по адресу, задаваемому значением второго параметра, и так далее до конца format_string.

Входное поле, выделяемое из потока ввода, включает все символы до первого пробельного символа, или до первого символа, который не может быть преобразован согласно спецификации формата, или до длины поля width, если она определена. Если параметров в вызове функции scanf указано больше, чем задано спецификаций формата, лишние параметры игнорируются. Результат не определен, если задано аргументов меньше, чем указано спецификаций формата.

Спецификация формата имеет следующую форму:

%[*][width](F|N][h|I|L|]type

Каждое поле в спецификации формата есть одиночный символ или число. Символ type, который появляется в последнем поле спецификации формата, определяет: входное поле интерпретируется как символ, строка или число.

Самая простая спецификация формата содержит только символ процента и символ типа (например, "%s").

Если за символом процента ('%') следует символ, который не является символом, управляющим форматом, то этот символ и все последующие символы (до следующего символа процента) рассматриваются как простая последовательность символов на входе. Например, чтобы задать символ процента на входе, используйте "%%".

Звездочка ('*'), следующая за символом процента, запрещает присвоение получаемого значения по адресу, задаваемому аргументом. Поле сканируется, но значение в память не записывается.

Спецификация width является положительным десятичным целым, определяющим максимальное число символов, которые будут прочитаны из потока stdin согласно текущему описанию формата ввода элемента. Не более чем width символов считываются и участвуют в получении значения, которое помещается по адресу, задаваемому значением соответствующего параметра.

Может быть прочитано меньше, чем width символов, если пробельный символ или символ, который не может быть преобразован согласно заданному формату, встретится раньше.

Префикс F или N позволяет не принимать во внимание способ адресации используемой модели памяти. F должен быть префиксом к аргументу, указывающему на далекий (far) объект, N должен быть префиксом к аргументу, указывающему на близкий (near) объект.

Префикс l обозначает, что используется long-вариант типа поля type, тогда как префикс h обозначает, что short-вариант type будет использован. Соответствующий аргумент должен указывать на long- или double-объект (для long-варианта) или short-объект (для short-варианта).

Префиксы l и k могут быть использованы с d, l, о, х и u символами type. Модификация l может быть использована с е и f символами. Префиксы l и h игнорируются, если определен другой type.

Префикс L (используемый только в системе программирования ТС версии 2.0) сочетается только с символами type: е, f, g и означает, что значение должно быть long double, а не double.

Символы type и их значения описаны в таблице 10.5.

Таблица 10.5.

Символы type

Символ Строка на входе Тип аргумента
d Десятичное целое Указатель на int
D Десятичное целое Указатель на long
o Восьмеричное целое Указатель на int
O Восьмеричное целое Указатель на long
x Шестнадцатеричное целое Указатель на int
X Шестнадцатеричное целое Указатель на long
i Десятичное, шестнадцатеричное или восьмеричное целое Указатель на int
I Десятичное, шестнадцатеричное или восьмеричное целое Указатель на long
u Десятичное целое без знака Указатель на unsigned int
U Десятичное целое без знака Указатель на unsigned long
е Значение с плавающей точкой, состоящее из необязательного знака (+ или -), набора из одной или более десятичных цифр, возможно, содержащих десятичную точку, и необязательной экспоненты ("е" или "Е"), за которой следует целое значение, возможно, со знаком. Указатель на float
F
c Символ. Пробельные символы не пропускаются при чтении; чтобы прочитать следующий непробельный символ, используйте спецификацию "%ls" Указатель на char
s Строка Указатель на массив символов, достаточный для размещения входного поля плюс завершающий символ конца строки ('\0'), который добавляется автоматически
N Чтение из потока ввода не производится Указатель на int-перемен-ную, в которую производится запись числа успешно прочитанных к данному моменту символов из потока stream

В системе программирования ТС версии 2.0 также являются значимыми следующие символы type:

Таблица 10.6.

Символ Строка на входе Тип аргумента
G Число с плавающей точкой Указатель на float
E
G
P Шестнадцатеричное значение Указатель на указатель в виде yyyy:zzzz или типа far или near zzzz Описатель "%р" предполагает, что тип указателя, адрес которого указывается в списке параметров, является типом указателя по умолчанию для используемой модели памяти

В системе программирования ТС версии 2.0 последовательности символов на вводе: "+INF", "-INF", "+NAN", "-NAN" распознаются как вещественные числа.

Чтобы прочитать строки, не разделенные символами пробел (' '), для типа "%s" может быть использован параметр — набор символов в квадратных скобках ('[' ']').

Соответствующее входное поле читается до первого символа, который не встречается внутри квадратных скобок. Если первый символ в наборе является знаком вставки ('^'), эффект обратный: входное поле читается до первого символа из указанного набора символов.

(ТС) Набор символов можно задавать как диапазон, например "[a-z]".

Чтобы поместить строку без символа конца строки ('\0'), используйте спецификацию %nc, где n — десятичное целое. В этом случае с-тип обозначает, что аргумент является указателем на массив символов. Следующие n символов будут прочитаны из входного потока в определяемое место и символ конца строки ('\0') не будет добавлен.

Функция scanf сканирует (просматривает) каждое входное поле, символ за символом. Чтение может быть остановлено раньше, чем будет достигнут пробельный символ по различным причинам:

— определенное width количество символов введено;

— следующий символ не может быть преобразован, как определено;

— следующий символ конфликтует с печатным символом в управляющей строке, в которой подразумевается соответствие;

— следующий символ не должен встретиться (или не встретился) в заданном наборе символов.

Когда это произошло, следующий невведенный символ рассматривается как первый символ следующего входного поля.

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

Число полей, которые были успешно преобразованы и присвоены. Возвращаемое значение не включает поля, которые были прочитаны, но не присвоены.

Значение EOF, если была попытка прочитать конец файла.

Значение 0, если не было присвоенных полей.

Смотри также

fscanf, printf, sscanf, vfprintf, vprintf, vsprintf

SEARCHPATH (TC)

#include <dir.h>

char *searchpath(char *filename);

Описание

Функция searchpath используется для поиска файла по его имени, имя файла задается строкой, адрес которой определяется значением параметра filename.

Сначала файл ищется в текущем каталоге, если его там нет, то ищется в каталогах, которые определены в переменной окружения PATH (смотри описание функции putenv).

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

Возвращается адрес строки, где записано полное имя файла, при удачном поиске и значение NULL при неудачном.

Смотри также

exec..., spawn..., system

SEGREAD (ТС & MSC)

#include <dos.h>

void segread(segregs);

struct SREGS *segregs;

Описание

Функция segread заполняет структуру, адрес которой задается значением параметра segregs, текущим содержанием сегментных регистров.

Тип структуры SREGS описан в файле dos.h (смотри также описание функции int86x).

Функция segread предназначена для использования с функциями intdosx и int86x для восстановления значений сегментных регистров для дальнейшего использования.

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

Функция не возвращает значения

Смотри также

intdosx, int86x, FP_SEG

SETBLOCK (ТС)

#include <dos.h>

int setblock(int seg, int newsize);

Описание

Функция setblock изменяет размер сегмента памяти, выделенного ранее через вызов функции allocmem.

Значение аргумента seg определяет адрес сегмента, который был выделен предыдущим вызовом функции allocmem.

Значение аргумента newsize определяет новый требуемый размер в параграфах (один параграф равняется 16 байтам) для сегмента.

Все выделяемые блоки выравниваются на границу параграфа.

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

Функция setblock в случае нормального завершения возвращает значение -1.

В случае ошибки возвращается размер наибольшего блока, который может быть выделен, при этом переменной _doserrno присваивается соответствующее значение.

Смотри также

coreleft, freemem, allocmem

SETBUF (ТС & MSC & ANSI)

#include <stdio.h>

void setbuf(streem, buffer);

FILE *stream;

char *buffer;

Описание

Функция setbuf позволяет пользователю управлять буферизацией для заданного потока stream (высокоуровневый ввод/вывод).

Значение аргумента stream должно соответствовать ранее открытому файлу (смотри описание функции fopen).

Если значение аргумента buffer равняется NULL, это означает отмену буферизации.

Иначе, значение аргумента buffer определяет адрес массива символов длины BUFSIZ, где BUFSIZ — размер буфера, константа, определенная в файле stdio.h.

Определенный пользователем буфер используется для буферизованного ввода/вывода указанного потока stream вместо выделяемого по умолчанию системного буфера.

Потоки stderr и stdout по умолчанию не буферизованы, но им могут быть присвоены буфера посредством setbuf.

Замечание. Последствия буферизации будут непредсказуемы, если только функция setbuf не вызвана сразу вслед за функцией fopen или fseek для данного потока.

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

Функция не возвращает значения.

Смотри также

fflush, fopen, fclose

SETCBRK (ТС)

#include <dos.h>

setcbrk (int value);

Описание

Функция setcbrk устанавливает реакцию на нажатие на клавиатуре комбинации клавиш <control/break>.

Если значение параметра value равно 0, то проверка выключается (проверка будет проводиться только при вводе/выводе с консольного терминала, принтера, линий связи).

Если значение value равно 1, то проверка включается (программа будет прерываться по нажатию <ctrl/c> или <ctrl/break> в любой момент).

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

Возвращается значение аргумента value.

Смотри также

getcbrk

SETDATE (ТС)

#include <dos.h>

void setdate(struct date *dateblk);

Описание

Функция setdate устанавливает текущую дату на основе информации, записанной в структуре, адрес которой задается значением параметра dateblk.

Тип структуры date описан в файле dos.h.

struct date

{

int da_year; /*текущий год*/

char da_day; /*месяц года*/

char da_mon; /*месяц/январь-1*/

}

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

Функция не возвращает значения.

Смотри также

getdate, gettime, settime

SETDISK (ТС)

#include <dir.h>

int setdisk(drive);

int drive;

Описание

Функция setdisk устанавливает текущим (используемым по умолчанию) устройством устройство, определяемое значением параметра drive (0='А', 1='В', 3='С' и т.д.), используя системный вызов MS-DOS 0x0E.

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

Функция setdisk возвращает общее число дисков, имеющихся в наличии.

Смотри также

getdisk, getcwd, getcurdir

SETDTA (ТС)

#include <dos.h>

void setdta(char far *dta);

Описание

Функция setdta устанавливает текущий адрес области передачи данных диска (DTA) (подробности смотри в руководстве "Technical Reference Manual").

Используется системный вызов MS-DOS 0x1A.

Примечание. Корректно работает только с моделями памяти: compact, large и huge.

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

Функция не возвращает значения.

Смотри также

getdta, findfirst

SETFTIME (TC)

#include <io.h>

int setftime (handle, ftimep);

int handle;

struct ftime *ftimep;

Описание

Функция setftime изменяет дату и время для открытого файла, дескриптор которого задается значением параметра handle.

Время и дата берутся из структуры, адрес которой задается значением параметра ftimep.

Тип структуры ftime описывается в файле io.h:

struct ftime

{

unsigned ft_sec:5; /*секунды*/

unsigned ft_min:6; /*минуты*/

unsigned ft_hour:5; /*часы*/

unsigned ft_day:5; /*дни*/

unsigned ft_month:4; /*месяц*/

unsigned ft_year:7; /*год, начиная с 1980*/

};

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

Значение 0 при успешном завершении операции.

Значение <0 при ошибке.

Смотри также

getftime

SETJMP (ТС & MSC & ANSI)

#include <setjmp.h>

int setjmp(env);

jmp_buf env;

Описание

Функция setjmp сохраняет окружение в момент вызова, это окружение в дальнейшем может быть восстановлено, с использованием функции longjmp. Вызов setjmp сохраняет текущее состояние окружения в переменной env.

Последующий вызов longjmp восстанавливает сохраненное окружение и возвращает управление на точку, следующую непосредственно за соответствующим вызовом функции setjmp (во время которого было сохранено окружение в ту переменную env, которая указывается при вызове функции longjmp).

Значения всех переменных (для системы программирования MSC — за исключением регистровых переменных), доступных в точке вызова setjmp, будут иметь те значения, которые они имели в момент вызова longjmp.

Замечание (MSC). Значения регистровых переменных непредсказуемы (что существенно, впрочем, только для тех случаев, когда с помощью функции longjmp происходит передача управления в пределах текущей функции).

Более детальное описание можно найти в описании функции longjmp.

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

Значение 0, после вызова функции setjmp для сохранения окружения.

Значение аргумента value функции longjmp, если функция setjmp выполняет возврат и возвращает значение как результат вызова функции longjmp.

Смотри также

longjmp

SETMEM (ТС)

#include <mem.h>

void memset(dest, cnt, stm);

char *dest;

unsigned cnt;

int sim;

Описание

Функция memset присваивает первым cnt байтам области, адрес которой задается значением параметра dest, значение sim.

Функция setmem идентична функции memset, за исключением возвращаемого значения и порядка следования параметров.

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

Функция не возвращает значения.

Смотри также

memccpy, memchr, mеmсmр, mеmсру

SETMODE (ТС & MSC)

#include <io.h> /*файл содержит прототип функции*/

#include <fcntl.h> /*файл содержит определения констант*/

int setmode(handle, mode);

int handle;

int mode;

Описание

Функция setmode устанавливает текстовый или двоичный режим работы с файлом, дескриптор которого определяется значением параметра handle (ввод/вывод нижнего уровня).

Значение параметра mode должно быть одним из следующих:

O_ТЕХТ Устанавливает текстовый режим.

O_BINARY Устанавливает двоичный режим.

Описание режимов содержится в описании функции open.

Функция setmode обычно используется для модифицикации режимов работы, заданных по умолчанию для потоков stdin, stdout, sdterr, stdoux и stdprn, но может быть использована для любого файла.

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

Ранее установленный режим, если операция выполнена успешно.

-1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EBADF Неправильный аргумент handle

EINVAL Неправильный аргумент mode (ни О_ТЕХТ, ни O_BINARY).

Смотри также

creat, fopen, open, fileno, read, write

SETTIME (TC)

#include <dos.h>

void settime (tlmep);

struct time *timep;

Описание

Функция settime устанавливает текущее время в системе, на основе информации, записанной в структуре, адрес которой определяется значением параметра timep.

Тип структуры time описан в файле dos.h:

struct time

{

unsigned char ti_min; /*минуты*/

unsigned char ti_hour; /*часы*/

unsigned char ti_hund; /*сотые доли секунд*/

unsigned char ti_sec; /*секунды*/

};

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

Функция не возвращает значения.

Смотри также

getdate, gettime, setdale

SETVBUF (ТС & MSC & ANSI)

#include <stdio.h>

int setvbuf(stream, buf, type, size);

FILE *stream;

char *buf;

int type;

int size;

Описание

Функция setvbuf позволяет пользователю управлять буферизацией и размером буфера файла, связанного с потоком stream.

Поток stream должен относиться к открытому файлу.

Массив, адрес которого задается значением параметра buf, используется в качестве буфера, если значение этого параметра не NULL, в последнем случае поток не буферизуется.

Если поток буферизуется, значение параметра type определяет тип, который должен быть либо _IONBF, либо _IOFBF, или _IOLBF.

Если тип равен _IOFBF или _IOLBF, то значение параметра size используется как размер буфера.

Если тип равен _IONBF, то поток не буферизован, и значения параметров size и buf игнорируются.

Допустимые значения параметра size: больше 0 и меньше, чем максимальный размер целого (int).

Значения констант определены в файле stdio.h:

#define _IOFBF 0 /*буферизация на полный объем буфера*/

#define _IOLBF 1 /*построчная буферизация появление символа '\n' приводит к скидыванию буфера при записи в файл и к прекращению подкачки в буфер при чтении из файла*/

#define _IONBF 2 /*файл не буферизуется*/

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

Значение 0, если операция выполнена успешно.

Ненулевое значение, если тип или размер буфера определены некорректно.

Смотри также

setbuf, fflush, fopen, fclose

SETVECT (TC)

#include <dos.h>

void setvect(intr_num, isr);

int intr_num;

void interrupt(*isr)();

Описание

Операционная система MS-DOS поддерживает набор распознаваемых аппаратурой векторов прерываний с номерами от 0 до 255. 4-байтовое значение в каждом векторе является действительным адресом места в памяти, где располагается функция обработки прерывания.

Функция setvect устанавливает новую функцию обработки прерываний, адрес этой функции задается значением параметра isr, для вектора прерывания, номер которого задается значением параметра intr_num.

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

Функция не возвращает значения.

Смотри также

disable, getvect

SETVERIFY (ТС)

#include <dos.h>

void setverify(int value);

Описание

Функция setverify предназначена для установления флага ОС MS-DOS проверки записи на диск. Если этот флаг включен, каждая операция записи на диск проверяется.

Используется системный вызов MS-DOS 0х2Е.

Функция setverify устанавливает флаг по значению параметра value: 0 — выключить, 1 — включить.

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

Функция не возвращает значения.

Смотри также

getverify

SIGNAL (ТС 2.0 & MSC & ANSI)

#include <signal.h>

int (*signal(sig, func))();

int sig;

int (*func)();

Описание

Функция позволяет процессу выбрать одну из трех возможностей для управления сигналами прерывания программы, поступающими от операционной системы.

Значение параметра sig определяет номер сигнала, на который устанавливается новая реакция.

В системе программирования MSC версии 4.0 аргумент sig должен иметь значение одной из констант SIGINT или SIGFPE, определенных в файле signal.h.

В системе программирования ТС версии 2.0 определены сигналы:

#define SIGABRT 22 /*ненормальное завершение, действия по умолчанию: _exit(3)*/

#define SIGFPE 8 /*прерывание по плавающей точке деление на ноль, неверная операция, действия по умолчанию: _exit(1)*/

#define SIGILL 4 /*неверная инструкция действия по умолчанию: _exit(1)*/

#define SIGINT 2 /*прерывание ctrl-break действия по умолчанию: как для INT 0x23*/

#define SIGSEGV 11 /*нарушение доступа к памяти действия по умолчанию: _exit(1)*/

#define SIGTERM 15 /*"мягкое" завершение процесса действия по умолчанию: _exit(1)*/

Для операционной системы OS/2 в системе программирования ТС версии 2.0 зарезервированы сигналы:

#define SIGBREAK 21 /*OS/2 сигнал Ctrl-Brk*/

#define SIGUSR1 16 /*OS/2 А-флаг процесса*/

#define SIGUSR2 17 /*OS/2 В-флаг процесса*/

#define SIGUSR3 20 /*OS/2 С-флаг процесса*/

SIGINT соответствует сигналу прерывания INT23H.

SIGFPE соответствует исключительным ситуациям с плавающей точкой, которые не замаскированы, такие как переполнение, деление на ноль, недействительная операция.

Значение аргумента func должно быть равно одной из констант SIG_DFL или SIG_IGN (также определенных в signal.h) или же определять адрес новой функции обработки прерывания.

#define SIG_DFL((void(*_Cdecl)(int))0) /*по умолчанию*/

#define SIG_IGN((void(*_Cdecl)(int))1) /*игнорировать*/

Для системы программирования ТС версии 2.0 определена также константа

#define SIG_ERR((void(*_Cdecl)(int))-1) /*сгенерировать ошибку*/

Действия при получении сигнала зависят от значения func следующим образом:

SIG_IGN — сигнал прерывания игнорируется. Это значение никогда не должно задаваться для сигнала SIGFPE, т.к. состояние процесса с плавающей точкой становится неопределенным.

SIG_DFL — вызванный процесс завершается при появлении сигнала и управление передается в MS-DOS. Все файлы, открытые процессом, закрываются, но буфера не скидываются.

Адрес для сигнала SIGINT: функция, на которую указывает func, получает аргумент SIGINT и выполняется. Если функция возвращает управление, вызванный процесс возобновляет выполнение непосредственно за той точкой, в которой был принят сигнал прерывания.

Перед тем как определяемая функция выполнится, значение func устанавливается в SIG_DEL; следующий сигнал прерывания трактуется, как описано выше для SIG_DEL, если при обработке реакция на сигнал не переопределена вновь. Это позволяет пользователю устанавливать сигналы в вызванной функции по необходимости.

Для SIGFPE: функция, на которую указывает func, получает два аргумента, SIGFPE и код ошибки FPE_xxx, и выполняется. (Смотри включаемый файл float.h для описания кодов FPE_xxx.)

Значение func вновь не устанавливается для последующих обработок сигнала. Чтобы вернуться из функции обработки исключительной ситуации при выполнении операции с плавающей точкой, удобно использовать функции setjmp и longjmp.

(Смотри пример для функции _fpreset).

Если функция возвращает управление, вызванный процесс возобновляет выполнение с состоянием процесса для плавающей точки.

Замечание. Заданная реакция на сигналы не сохраняется в порождаемых процессах, созданных через вызов функций ехес или spawn. В порожденном процессе устанавливается реакция по умолчанию.

Замечание. В системе программирования ТС версии 1.5 для этих же целей используется функция ssignal.

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

Предыдущее значение func.

Значение -1, если задано недействительное значение параметра sig; переменной errno присваивается значение EINVAL.

Смотри также

gsignal, ssignal, abort, exit, _exit, _fpreset, spawnl, spawnle, spawnlp, spawnv, spawnve, spawnvp

SIN, SINH (TC & MSC & ANSI)

#include <math.h>

double sin(x);

double sinh(x);

double x;

Описание

Функции sin и sinh возвращают синус и гиперболический синус вещественного аргумента х соответственно.

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

Функция sin возвращает значение синуса х.

(СП MSC функция sin) Если х большое и произошла частичная утрата значения в результате, генерируется ошибка PLOSS, но сообщение об ошибке не печатается. Если х такое большое, что произошла полная утрата значения в результате, то печатается сообщение об ошибке TLOSS в поток stderr и возвращается значение 0. В обоих случаях переменной errno присваивается значение ERANGE.

Функция sinh возвращает значение гиперболического синуса х. Если результат большой, то переменной errno присваивается значение ERANGE и возвращается значение HUGE (положительное или отрицательное, в зависимости от значения х).

Обработку ошибок можно изменить, используя функцию matherr.

Смотри также

acos, asin, atan, atan2, cos, cosh, tan, tanh

SLEEP (TC)

#include <dos.h>

void sleep(unsigned seconds);

Описание

Функция приостанавливает выполнение программы на seconds секунд.

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

Функция не возвращает значения.

Смотри также

delay

SOPEN (ТС 2.0 & MSC)

#include <fcntl.h>

#include <sys\types.h>

#include <sys\stat.h>

#include <share.h>

#include <io.h>

int sopen(pathname, oflag, shflag, pmode);

char *pathname;

int oflag;

int shflag;

int pmode;

Описание

Функция sopen открывает файл, имя которого задается строкой, адрес которой определяется значением параметра pathname, и подготавливает файл для чтения или записи, как определено аргументами oflag, shflag и pmode.

Значение аргумента oflag является целым значением, сформированным комбинацией одной или более констант, определенных в файле fcntl.h; когда задается более одной константы, они разделяются операциями ИЛИ (|).

O_APPEND — перемещать указатель файла на конец файла перед каждой операцией записи.

O_CREAT — создать и открыть новый файл для записи; не дает результата, если файл уже существует.

O_EXCL — возвращает ошибочный код, если файл, определенный в pathname, уже существует.

Применяется только вместе с O_CREAT.

O_RDONLY — открыть файл только для чтения; если этот флаг задан, ни O_RDWR, ни O_WRONLY не могут быть заданы.

O_RDWR — открыть файл для чтения и записи; если этот флаг задан, ни O_RDONLY, ни O_WRONLY не могут быть заданы.

O_TRUNC — открыть и сузить существующий файл до нулевой длины; файл должен иметь доступ для записи. Содержимое файла теряется.

O_WRONLY — открыть файл только для записи; если этот флаг задан, ни O_RDONLY, ни O_RDWR не могут быть заданы.

O_BINARY — открыть файл в двоичном режиме (см.описание функции fopen).

О_ТЕХТ — открыть файл в текстовом режиме (см.описание функции fopen).

Замечание. O_TRUNC полностью затирает содержимое существующего файла. Будьте с ним осторожны.

Аргумент shflag является константным выражением, состоящим из одной или более констант, определенных в share.h. Смотри документацию по MS-DOS для получения подробной информации о значении используемых режимов.

SH_COMPAT Установить возможность разделения файла процессами.

SH_DENYRW Запретить доступ к файлу для чтения и записи.

SH_DENYWR Запретить доступ для записи.

SH_DENYRD Запретить доступ для чтения.

SH_DENYNO Разрешить доступ для чтения и записи.

Аргумент pmode требуется только тогда, когда задано O_CREAT. Если файл существует, значение pmode игнорируется. Иначе, pmode определяет способ доступа к файлу, который устанавливается, когда новый файл закрывается впервые. Значение pmode есть целое значение, содержащее одну или обе константы S_IWRITE и S_IREAD, определенных в файле sys\stat.h. Когда определяются обе константы, они разделяются оператором ИЛИ(|).

Действие pmode:

S_WRITE Доступ для записи.

S_READ Доступ для чтения.

S_READ|S_WRITE Доступ для чтения и записи.

Если доступ для записи не задан, файл открыт только для чтения.

Под MS-DOS все файлы доступны для чтения; поэтому нет необходимости задавать только доступ для записи. Таким образом, режимы S_WRITE и S_READ|S_WRITE эквивалентны.

Замечание. Функция sopen должна быть использована только под MS-DOS версий 3.0 и позже. Под ранними версиями аргумент shflag игнорируется.

Замечание (ТС). open(path, access, shflag, mode) реализуется как макрос open(path, ((access)|(shflag)), mode)

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

Дескриптор (handle) для открытого файла.

Значение -1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES Заданное имя pathname является каталогом, или попытка открыть для записи файл, который доступен только для чтения, или встретилось нарушение распределения.

EINVAL SHARE.COM — не задано, (только для СП MSC)

EEXIST — определены флаги О_CREAT и O_EXECL, но файл уже существует. (Только для СП MSC).

EMFILE — нет больше доступных дескрипторов handle (открыто максимальное возможное число файлов).

ENOENT — файл или каталог на пути к нему не найдены.

Смотри также

access, chmod, close, creat, dup, dup2, fopen, open, umask

SOUND (TC 2.0)

#include <dos.h>

void sound(unsigned freq);

Описание

Функция sound включает устройство подачи звукового сигнала, установив ему частоту freq (в Гц),

Замечание. Соответствующая функция существует в системе программирования Turbo-Pascal.

Замечание. Чтобы совсем отключить устройство подачи звукового сигнала, используйте функцию nosound.

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

Функция не возвращает значения.

Смотри также

delay, nosound

SPAWNL, SPAWNLE, SPAWNLP, SPAWNLPE, SPAWNV, SPAWNVE, SPAWNVP, SPAWNVPE (TC & MSC)

#include <stdio.h>

#include <process.h>

int spawnl (modeflag, pathname, arg0, arg1..., argn, NULL);

int spawnle (modeflag, pathname, arg0, arg1..., argn, NULL, envp);

int spawnlp (modeflag, pathname, arg0, argl., argn, NULL);

int spawnlpe (modeflag, pathname, arg0, arg1..., argn, NULL, envp);

int spawnv (modeflag, pathname, argv);

int spawnve (modeflag, pathname, argv, envp);

int spawnvp (modeflag, pathname, argv);

int spawnvpe (modeflag, pathname, argv, envp);

int modeflag;

char *pathname;

char *arg0,*arg1...,*argn;

char *argv[];

char *envp[]; ,

Описание

Функции spawn создают и запускают на выполнение новые (под)процессы.

Должно быть доступно достаточное место в памяти для загрузки и выполнения порождаемого процесса.

Аргумент modeflag определяет, что будет происходить с вызвавшим процессом (процессом-отцом) после запуска подпроцесса (процесса-сына).

Следующие значения для аргумента modeflag определены в файле process.h:

P_WAIT — приостановить процесс-родитель, пока выполнение порождаемого процесса не завершится.

P_NOWAIT — продолжать выполнять процесс-родитель вместе с порождаемым процессом (не реализовано в MS-DOS).

P_OVERLAY — наложить порождаемый процесс на процесс-родитель, затерев родитель (такой же эффект, как при вызове exec). Только значения P_WAIT и P_OVERLAY могут быть использованы в настоящее время.

Значение P_NOWAIT зарезервировано для будущих расширений. Использование значения P_NOWAIT вызовет ошибку.

Значение аргумента pathname задает адрес строки, определяющей имя файла, который будет выполняться как порождаемый процесс. Pathname может определять полный путь (с корня), частичный путь (с текущего каталога) или просто имя файла.

Если попытка найти файл окончится неуспешно, то добавится расширение .ЕХЕ и будет предпринята еще одна попытка открыть файл. Если pathname содержит расширение, то вторая попытка не предпринимается. Если pathname заканчивается точкой, то поиск ведется для pathname без расширения.

Функции spawnlp, spawnlpe, spawnvp и spawnvpe ведут поиск файла по pathname (используя стандартные процедуры) в каталогах, определяемых в переменной окружения PATH.

Аргументы передаются порождаемому процессу заданием одного или более указателей на символьные строки как аргументы при spawn-вызове. Эти символьные строки формируют список аргументов для порождаемого процесса.

Сумма длин строк, формирующих список аргументов, не должна превышать 128 байтов. Нулевой символ ('\0') в конце каждой строки не учитывается, но символы-пробелы (' '), разделяющие аргументы, учитываются.

Аргументы-указатели могут быть переданы как отдельные аргументы (spawnl, spawnle, spawnlp, spawnlpe) или как массив указателей (spawnv, spawnve, spawnvp, spawnvpe).

Минимум один аргумент, arg0 или argv[0], должен быть передан порождаемому процессу. По соглашению, этот аргумент является копией pathname, хотя и отличное значение не вызовет ошибочной ситуации.

Под MS-DOS версий ниже 3.0 передаваемое значение arg0 или argv[0] недоступно для порождаемого процесса. Под MS-DOS версий 3.0 и выше доступно.

Вызов функций spawnl, spawnle, spawnlp, spawnlpe обычно используется, когда число аргументов известно заранее. Аргумент arg0 обычно является указателем на символьные строки, формирующие новый список аргументов. Следующим за argn должен быть NULL-указатель, означающий конец списка аргументов.

Вызовы spawnv, spawnvp, spawnve, spawnvpe обычно используются, когда число аргументов переменно. Указатели на аргументы передаются как массив argv. Аргумент argv[0] обычно является указателем на pathname, а от argv[1] до argv[n] — указатели на символьные строки, формирующие новый список аргументов. Аргумент argv[n+1] должен быть NULL-указатель, означающий конец списка аргументов.

Файлы, которые были открыты перед вызовом spawn, остаются открытыми в порождаемом процессе.

При вызове функций spawnl, spawnlp, spawnv, spawnvp порождаемый процесс унаследует и окружение родителя.

Вызов функций spawnle, spawnlpe, spawnve или spawnvpe позволяет пользователю вносить изменения в окружение порождаемого процесса, передав список окружающих характеристик через аргумент envp.

Аргумент envp является массивом символьных указателей, каждый элемент которого (за исключением последнего) указывает на строку, завершающуюся нулевым символом ('\0'), определяющую переменную окружения. Такая строка обычно имеет форму:

NAME=value

NAME — имя переменной окружения, a value является строковым значением, в которое переменная устанавливается. (Заметим, что value не заключается в двойные кавычки.) Последним элементом массива envp должен быть NULL. Когда envp содержит только NULL, порождаемый процесс унаследует окружение от родителя.

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

Статус завершения порождаемого процесса.

Статус завершения равен 0, если процесс завершится нормально.

Статус завершения может быть установлен в ненулевое значение, если порождаемый процесс специально вызвал exit команду с ненулевым аргументом.

По соглашению, положительный статус завершения сигнализирует о ненормальном завершении: abort или прерывание.

Значение -1 сигнализирует об ошибке (порождаемый процесс не стартовал); при этом переменной errno присваивается одно из следующих значений:

E2BIG — список аргументов превышает 128 байтов, или область, требуемая для информации окружения, превышает 32 байта.

EINVAL — неверный аргумент modeflag.

ENOENT — файл или каталог на пути к нему не найдены.

ENOEXEC — определяемый файл невыполняемый, или имеет формат, неприемлемый для выполнения.

ENOMEM — нет достаточной доступной памяти, чтобы выполнить порождаемый процесс.

Замечание. Spawn-вызовы не наследуют двоичный/текстовый режим работы с открытым файлом. Если порождаемый процесс использует файлы, унаследованные от родителя в режиме, отличном от режима по умолчанию, необходимо воспользоваться функцией setmode, чтобы установить требуемый режим работы.

Смотри также

abort, excel, execle, execlp, execlpe, execv, execve, execvp, execvpe, exit, _exit, onexit, system

SPRINTF (TC & MSC & ANSI)

#include <stdio.h>

int sprintf(buffer, format_string[, argument...]);

char *buffer;

char *format_string;

Описание

Функция sprintf форматирует и выводит последовательности символов и значений аргументов в символьный массив, адрес которого задается значением аргумента buffer.

Каждый аргумент преобразуется и выводится согласно соответствующей спецификации формата в строке, адрес которой задается значением параметра format_string.

Строка описания формата вывода интерпретируется так же, как и для функции printf; смотри описание функции printf.

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

Число символов, помещенных в строку, адрес которой задается значением параметра buffer.

Смотри также

fprintf, printf, sscanf

SQRT (ТС & MSC & ANSI)

#include <math.h>

double sqrt(x);

double x;

Описание

Функция sqrt вычисляет квадратный корень от вещественного аргумента х.

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

Результат вычисления квадратного корня.

Значение 0, если значение х отрицательное; при этом переменной errno присваивается значение EDOM и печатается сообщение об ошибке DOMAIN. Обработку ошибки можно изменить, используя функцию matherr.

Смотри также

exp, log, matherr, pow

SRAND (ТС & MSC & ANSI)

#include <stdlib.h>

void srand(seed);

unsigned seed;

Описание

Функция srand устанавливает начальное значение для генератора псевдослучайных целых чисел.

Рекомендуется использовать значение 1 в качестве аргумента для переинициализации генератора. При других значениях для seed устанавливается случайная стартовая точка.

Для получения случайных чисел используется функция rand.

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

Функция не возвращает значения.

Смотри также

rand

SSCANF (TC & MSC & ANSI)

#include <stdio.h>

int sscanf(buffer, format_string[, argument...]);

char *buffer;

char *format_string;

Описание

Функция sscanf читает данные из символьного массива, адрес которого задается значением параметра buffer, в переменные, адреса которых задаются аргументами arguments.

Каждый аргумент должен быть указателем на переменную с типом, соответствующим типу, определенному в строке описания формата, адрес которой задается значением параметра format_string.

Строка описания формата управляет интерпретацией входных полей и имеет тот же вид, что и для функции scanf.

Смотри описание функции scanf.

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

Число полей, которые были успешно преобразованы и присвоены. Возвращаемое значение не включает поля, которые были прочитаны, но не присвоены.

Значение EOF, если была попытка прочитать символ конца строки.

Значение 0, если не было присвоенных полей.

Смотри также

fscanf, scanf, sprintf

SSIGNAL (ТС 1.5)

#include <signal.h>

int(*ssignal(sig, func))();

int sig;

int (*func)();

Описание

Функция ssignal позволяет процессу выбрать одну из возможностей для управления сигналами прерывания от операционной системы.

Значение аргумента sig определяет, для какого сигнала задается реакция. Номер сигнала — это целое число в диапазоне от 1 до 15.

Аргумент func должен иметь значение одной из констант SIG_DEL или SIG_IGN (определенных в signal.h) или быть адресом функции.

Действия при получении сигнала зависят от значения func следующим образом:

SIG_IGN Сигнал прерывания игнорируется. Это значение никогда не должно задаваться для SIGFPE, т.к. состояние процесса с плавающей точкой становится неопределенным.

SIG_DFL Вызванный процесс завершается, и управление передается в MS_DOS. Все файлы, открытые процессом, закрываются, но буфера не скидываются.

Адрес для сигнала SIGINT: функция, на которую указывает func, получает аргумент SIGINT и выполняется. Если функция возвращает управление, вызванный процесс возобновляет выполнение непосредственно за той точкой, в которой был принят сигнал прерывания.

Замечание. В системе программирования ТС версии 2.0 и в системе программирования MSC для тех же целей используется функция signal.

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

Возвращается предыдущее значение func для данного сигнала sig.

Если номер сигнала указан неверно, возвращается значение SIG_DFL.

Смотри также

gsignal, signal, abort, exit, _exit, _fpreset, spawnl, spawnle, spawnlp, spawnv, spawnve, spawnvp

STACKAVAIL (MSC)

#include <malloc.h> /*используется только для описания функции*/

unsigned int stackavail();

Описание

Функция stackavail возвращает приблизительный размер памяти, доступной для динамического распределения через функцию alloca (в программном стеке), в байтах.

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

Размер в байтах, как беззнаковое целое значение.

Смотри также

alloca, freed, memavl

STAT (ТС & MSC)

#include <sys\types.h>

#include <sys\stat.h>

int stat(pathname, buffer);

char *pathname;

struct stat *buffer;

Описание

Функция stat получает информацию о файлах и каталогах, которые определяются именем, хранящимся в строке, адрес которой задается значением параметра pathname.

Получаемая информация записывается в структуру, адрес которой задается значением параметра buffer.

Тип структуры stat, определенный в файле sys\stat.h, содержит следующие поля:

struct stat

{

short st_dev;

short st_ino;

short st_mode;

short st_nlink;

int st_uld;

int st_gid;

short st_rdev;

long st_size;

long st_atime;

long st_mtime;

long st_ctime;

};

где:

st_mode — битовая строка, определяющая вид информации в файле. Бит S_IFDIR устанавливается, если pathname определяет каталог; бит S_IFREG устанавливается, если pathname определяет обычный файл. Бит S_IWRITE устанавливается, если пользователь имеет право на запись в файл. Бит S_IREAD устанавливается, если пользователь имеет право на чтение из файла;

st_dev — номер устройства, на котором расположен файл;

st_rdev — то же, что и st_dev;

st_nlink — всегда 1;

st_size — размер файла в байтах;

st_atime — время последней модификации файла;

st_mtime — то же, что и st_atime;

st_ctime — то же, что и st_atime.

Остальные поля в структуре stat не содержат значимой информации для MS-DOS.

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

Значение 0, если информация о статусе файла получена.

Значение -1, если имя файла или имя пути не могут быть найдены; переменной errno присваивается значение ENOENT.

Смотри также

access, fstat

_STATUS87 (TC & MSC)

#include <float.h>

unsigned int _status87();

Описание

Функция _status87 получает слово состояния процессора с плавающей точкой 8087/800287. Также учитывается информация, полученная обработчиком исключительных ситуаций для операций с плавающей точкой.

Таким образом, опрашивается состояние целиком пакета функций работы с плавающей точкой.

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

Слово, определяющее состояние библиотеки работы с плавающей точкой.

Значение отдельных битов описано в файле float.h. Смотри файл float.h для получения полного описания битов в возвращаемом функцией значении.

Смотри также

_clear87, _control87

STIME (ТС)

#include <time.h> /*используется только для описания функции*/

int time(timeptr);

long *timeptr;

Описание

Функция stime устанавливает системное время и дату на основании значения переменной, адрес которой определяется значением параметра timeptr, трактуя значение этой переменной как количество секунд, прошедших с момента 00:00:00 по Гринвичу первого января 1970 г.

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

Функция возвращает значение 0.

Смотри также

asctime, ftime, gmtime, localtime, utime, time

STPCPY (TC)

#include <string.h> /*используется только для описания функции*/

char stpcpy(string1, string2);

char *string1;

char *string2;

Описание

Функция stpcpy копирует строку, адрес которой задается значением параметра string2, включая завершающий нулевой байт ('\0') по адресу, определяемому значением параметра string1, и возвращает указатель на последний записанный символ (всегда нулевой байт).

Проверка на переполнение не выполняется.

Функция stpcpy идентична strcpy, за исключением того, что функция strcpy возвращает значение string1, а функция stpcpy возвращает значение string1+strlen(string2).

Функция strlen описана далее.

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

Функция возвращает указатель на последний записанный символ (всегда указывает на нулевой байт).

Смотри также

strcpy

STRCAT, STRCHR, STRCMP, STRCPY, STRCSPN (ТС & MSC & ANSI), STRDUP, STRICMP (TC & MSC), STRCMPI (MSC)

#include <string.h> /*используется только для описания функции*/

char *strcat(string1, string2);

char *string1;

char *string2;

char *strchr(string, sim);

char *string;

int sim;

int strcmp(string1, string2);

char *string1;

char *string2;

int strcmpi(string1, string2);

char *string1;

char *string2;

char strcpy(string1, string2);

char *string1;

char *string2;

int strcspn(string1, string2);

char *string1;

char *string2;

char *strdup(string);

char *string;

int stricmp(string1, string2);

char *string1;

char *string2;

Описание

Функции strcat, strchr, strcmp, strcmpi, strcpy, strcspn, strdup и stricmp оперируют со строками, которые завершаются нулевым символом ('\0').

Проверка на переполнение не выполняется, когда строка копируется или производится дописывание в конец строки.

Функция strcat добавляет строку, адрес которой задается значением аргумента string2, в конец строки, адрес которой определяется значением аргумента string1, записывая в конец строки-результата нулевой символ, и возвращает указатель на сцепленную строку (значение аргумента string1).

Функция strchr возвращает указатель на первое местонахождение символа, имеющего код sim, в строке, адрес которой задается значением аргумента string. Символ sim может быть нулевым символом ('\0'); тогда поиск ведется для нулевого символа. Функция возвращает NULL, если символ не найден.

Функция strcmp сравнивает строки, адреса которых задаются значениями аргументов string1 и string2, лексографически и возвращает значение, определяющее их соотношение:

меньше 0 string1 меньше, чем string2

0 string1 идентично string2

больше 0 string1 больше, чем string2

Функции strcmpi и stricmp являются менее чувствительными версиями функции strcmp (функция strcmpi доступна только в системе программирования MSC). Строки, адреса которых задаются значениями аргументов string1 и string2, сравниваются таким образом, что заглавные и прописные буквы считаются эквивалентными.

Функция strcpy копирует строку, адрес которой определяется значением аргумента string2, включая завершающий нулевой символ, по адресу, определяемому аргументом string1, и возвращает значение аргумента string1.

Функция strcspn возвращает индекс первого символа в строке, адрес которой задается значением аргумента string1, который принадлежит набору символов, содержащихся в строке, адрес которой задается значением аргумента string2. Это значение эквивалентно длине начальной подстроки string1, которая не содержит ни одного символа из string2. Завершающий нулевой символ не учитывается при поиске. Если string1 начинается с символа из string2, то возвращается значение 0.

Функция strdup получает область памяти (через вызов функции malloc) для копирования строки и возвращает указатель на область памяти, в которую скопирована строка. Возвращается значение NULL, если не удалось выделить память через вызов функции malloc.

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

Описано выше.

Смотри также

strncat, strncmp, strncpy, strnicmp, strrchr, strspn

STRERROR (TC & MSC & ANSI), _STRERROR (TC)

Использование (MSC)

#include <string.h> /*используется только для описания функции*/

char *strerror(string);

char *string;

int errno;

int sys_nerr;

char sys_errlist[ sys_nerr];

Использование (ТС)

#include <string.h>

#include <stdio.h>

char *_strerror(string);

char *string;

char *strerror(numerr);

int numerr;

Описание (функции strerror для СП MSC и функции _strerror для СП ТС)

Если значение параметра string равно NULL, функция возвращает указатель на строку, которая содержит системное сообщение об ошибке для последнего вызова библиотечной функции, во время которого произошла ошибка; в конце строки стоит символ новой строки ('\n').

Если значение параметра string не равно NULL, то функция возвращает указатель на строку, содержащую, по порядку: строку, адрес которой задается значением параметра string, двоеточие, пробел, системное ошибочное сообщение для последнего вызова библиотечной функции, во время которого произошла ошибка; в конце строки стоит символ новой строки ('\n').

Строка, адрес которой определяется значением параметра string, должна иметь длину не более 94 байтов.

В отличие от функции perror, описываемая функция сама не печатает никаких сообщений.

Чтобы напечатать сообщение, возвращаемое функцией strerror, в поток stdout, необходимо вызвать printf:

if((access("datafile",2))==-1)

printf(strerror(NULL));

Действительный код ошибки помещается в переменную errno, которая описывается на внешнем уровне (пользователь не должен заботиться о ее описании)

К тексту системного сообщения об ошибке можно получить доступ также через переменную sys_errlist, которая является массивом сообщений, упорядоченным по кодам ошибок.

Функция strerror обеспечивает доступ к нужному ошибочному сообщению, используя значение errno как индекс для sys_errlist.

Значение переменной sys_nerr определяется как максимальное число элементов в массиве sys_errlist.

Чтобы результат был правильным, функция strerror должна быть вызвана непосредственно за библиотечной командой, которая вернула код возврата, сигнализирующий об ошибке. Иначе значение errno может быть затерто последующими вызовами.

Замечание. Под ОС MS-DOS некоторые errno значения из списка errno.h не используются.

Функция strerror печатает пустую строку для тех значений errno, которые не используются под ОС MS-DOS.

Описание (функции strerror для СП ТС)

Функция возвращает указатель на строку, которая содержит системное ошибочное сообщение, соответствующее коду ошибки numerr.

Замечание. В системе программирования ТС версии 1.0 функция strerror была определена так же, как и в системе программирования MSC.

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

Описано выше.

Смотри также

clearerr, ferror, perror

STRLEN (ТС & MSC & ANSI)

#include <string.h> /*используется только для описания функции*/

int strlen(string);

char *string;

Описание

Функция strlen возвращает длину в байтах строки, адрес которой определяется значением параметра string, не учитывая завершающий нулевой символ ('\0').

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

Длина строки.

Нет ошибочных кодов возврата.

STRLWR (ТС & MSC)

#include <string.h> /*используется только для описания функции*/

char strlwr(string);

char *string;

Описание

Функция strlwr преобразует заглавные буквы в строке, адрес которой определяется значением параметра string, в строчные. Строка завершается нулевым символом ('\0').

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

Указатель на преобразованную строку (значение параметра string).

Нет ошибочных кодов возврата.

Смотри также

strupr

STRNCAT, STRNCMP, STRNCPY (ТС & MSC & ANSI), STRNSET (ТС & MSC), STRNICMP

#include <string.h> /*используется только для описания функции*/

char *strncat(string1, string2, n);

char *string1;

char *string2;

unsigned int n;

int strncmp(string1, string2, n);

char *string1;

char *string2;

unsigned int n;

int strnicmp(string1, string2, n);

char *string1;

char *string2;

unsigned int n;

char *strncpy(string1, string2, n);

char *string1;

char *string2;

unsigned int n;

char *strnset(string, sim, n);

char *string;

int sim;

unsigned int n;

Описание

Функции strncat, strncmp, strnicmp, strncpy, strnset выполняют операции над строками, рассматривая, самое большее, первые n символов или до завершающего строку нулевого символа ('\0').

Функция strncat добавляет (дописывает), самое большее, первые n символов из строки, адрес которой определяется значением параметра string2, в строку, адрес которой определяется значением параметра string1, завершая результирующую строку нулевым символом ('\0').

Функция strncat возвращает указатель на сцепленную строку (значение параметра string1). Если n больше длины строки string2, то длина строки string2 используется вместо n.

Функция strncmp сравнивает, самое большее, первые n символов в строках, адреса которых определяются значениями параметров string1 и string2, лексографически и возвращает значение, определяющее соотношение между строками:

значение меньше 0 string1 меньше, чем string2

значение 0 string1 идентична string2

значение больше 0 string1 больше, чем string2.

Функция strnicmp является менее чувствительной версией функции strncmp: при сравнении заглавные и строчные буквы считаются эквивалентными.

Функция strncpy копирует точно n символов строки, адрес которой определяется значением параметра string2, в строку, адрес которой определяется значением параметра string1.

Функция strncpy возвращает значение параметра string1 (адрес строки-результата). Если значение n меньше, чем длина строки string2, нулевой символ ('\0') не добавляется автоматически в новую строку. Если значение n больше, чем длина строки string2, то в строку-результат добавляется в конец нулевой символ ('\0').

Функция strnset присваивает не более чем первым n символам строки, адрес которой задается значением параметра string, новое значение, определяемое параметром sim. Функция strnsrt возвращает указатель на измененную строку string. Если значение n больше, чем длина строки string, то длина строки string используется вместо n.

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

Описано выше.

Смотри также

strcat, strcmp, strcpy, strset

STRPBRK (ТС & MSC & ANSI)

#include <string.h> /*используется только для описания функции*/

char *strpbrk(string1, string2);

char *string1;

char *string2;

Описание

Функция strpbrk находит первое вхождение в строке, адрес которой задается значением параметра string1, любого символа из набора символов, содержащихся в строке, адрес которой задается значением параметра string2. Завершающий нулевой символ ('\0') не включается в поиск.

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

Указатель на первое местоположение любого символа из string2 в string1. Значение NULL, если нет общих символов.

Смотри также

strchr, strrchr

STRRCHR (ТС & MSC & ANSI)

#include <string.h> /*используется только для описания функции*/

char *strrchr(string, sim);

char *string;

int sim;

Описание

Функция strrchr находит последнее вхождение символа sim в строке, адрес которой задается значением параметра string. Завершающий нулевой символ включается в поиск.

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

Указатель на последнее местоположение символа sim в строке string.

Значение NULL, если заданный символ не найден в строке.

Смотри также

strchr, strpbrk

STRREV (ТС & MSC)

#include <string.h> /*используется только для описания функции*/

char *strrev(string);

char *string;

Описание

Функция strrev переписывает заново строку, адрес которой задается значением параметра string, меняя порядок следования символов в строке на противоположный. Завершающий нулевой символ ('\0') остается на месте.

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

Указатель на измененную строку (копия значения параметра string).

Смотри также

strcpy, strset

STRSET (ТС & MSC)

#include <string.h> /*используется только для описания функции*/

char *strset(string, sim);

char *string;

int sim;

Описание

Функция strset присваивает новое значение всем символам строки, адрес которой задается значением параметра string, за исключением завершающего нулевого символа ('\0'). Новое значение задается параметром sim.

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

Указатель на измененную строку (копия значения параметра string).

Смотри также

strnset

STRSPN (ТС & MSC & ANSI)

#include <string.h> /*используется только для описания функции*/

int strspn(string1, string2);

char *string1;

char *string2;

Описание

Функция strspn возвращает индекс первого символа строке, адрес которой задается значением параметра string1, который не принадлежит набору символов, содержащихся в строке, адрес которой задается значением параметра string2.

Это значение эквивалентно длине начальной подстроки строки string1, которая содержит только символы из набора символов в строке string2.

Нулевой символ, завершающий строку string2, не рассматривается. Если строка string1 начинается с символа не из набора string2, функция strspn возвращает значение 0.

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

Значение, определяющее позицию первого символа в string1, не входящего в набор, определяемый string2.

Смотри также

strcspn

STRSTR (ТС & MSC & ANSI)

#include <string.h> /*используется только для описания функции*/

char *strstr(string1, string2);

char *string1;

char *string2;

Описание

Функция strstr возвращает указатель на первое вхождение подстроки, которая содержится в символьном массиве, адрес которого задается значением параметра string2, в строке, адрес которой определяется значением параметра string1.

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

Указатель по строке string1, на символ, с которого начинается первое вхождение подстроки string2 в строке string1.

Значение NULL, если вхождение не найдено.

Смотри также

strcspn

STRTOD, STRTOL (ТС & MSC & ANSI)

#include <stdlib.h>

double strtod(nptr, endptr);

char *nptr;

char **endptr;

long strtol(nptr, endptr, base);

char *nptr;

char **endptr;

int base;

Описание

Функции strtod и strtol преобразуют строку символов в значение типа double или long int соответственно.

Строка символов является последовательностью символов, которая может быть интерпретирована как числовое значение определенного типа. Эти функции прекращают чтение строки с первого символа, который они не могут распознать как часть числа (это может быть и нулевой символ ('\0'), завершающий строку).

Для функции strtol этим последним символом может быть также первый символ-цифра, код которого больше или равен коду '0'+base.

Если значение параметра endptr не равно NULL, то оно определяет указатель, который содержит адрес символа, на котором надо прекратить преобразование (просмотр строки).

Функция strtod ожидает, что значение параметра nptr — это адрес строки следующего вида:

[пробелы][знак][цифры][.цифры][{d|D|е|Е}[знак]цифры]

Первый символ, который не соответствует этой форме, прекращает дальнейший просмотр строки.

Функция strtol ожидает, что значение параметра nptr — это адрес строки следующего вида:

[пробелы][знак][0][х][цифры]

Если значение параметра base лежит между 2 и 36, то оно используется как основание для преобразования числа (как основание системы исчисления, в которой записано число в строке).

Если значение параметра base равно 0, то начальные символы строки, на которую указывает nptr, используются, чтобы определить основание: если первый символ есть '0' и второй символ есть цифры '1'-'7', то строка интерпретируется как восьмеричное целое; если первый символ есть '0' и второй символ есть 'х' или 'X', то строка интерпретируется как шестнадцатеричное целое; если первый символ есть '1'-'9', то строка интерпретируется как десятичное целое.

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

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

Функция strtod возвращает значение HUGE, если произошло переполнение.

Функция strtol возвращает значение типа long, значение 0 в случае ошибки.

В обоих случаях при ошибке переменной errno присваивается значение ERANGE.

Смотри также

atof, atol, strtoul

STRTOK (ТС & MSC & ANSI)

#include <string.h> /*используется только для описания функции*/

char *strtok(strtng1, string2);

char *string1;

char *string2;

Описание

Функция strtok принимает параметр string1, задающий адрес строки из нуля или более символов, и параметр string2, задающий адрес строки, рассматриваемой как набор символов-разделителей для строки string1.

Символы из string1 при вызове strtok группируются в слова.

При первом вызове strtok для заданного значения параметра string1 производится возврат адреса первого символа string1. Чтобы найти начало следующего слова в string1, необходимо вызвать функцию strtok с NULL-значением аргумента string1.

Набор разделителей может различаться от вызова к вызову, так что string2 может иметь любые значения.

Замечание. Вызов strtok будет модифицировать строку string1 при каждом вызове, при этом вставляется нулевой символ ('\0') после очередного слова в строке string1.

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

При первом вызове strtok она возвращает указатель на первый символ в string1. При последующем вызове, с NULL-значением параметра string1, функция strtok возвращает указатель на следующее слово в строке.

Значение NULL возвращается, когда нет более слов. Все слова завершаются нулевым символом.

Смотри также

strcspn, strspn

STRTOUL (TC 2.0 & ANSI)

#include <stdlib.h>

unsigned long strtoul(nptr, endptr, base);

char *nptr;

char **endptr;

int base;

Описание

Функция strtoul подобна функции strtol и преобразует строку символов в значение типа unsigned long.

Строка символов является последовательностью символов, которая может быть интерпретирована как числовое значение определенного типа. Прекращается чтение строки с первого символа, который они не могут распознать как часть числа (это может быть и нулевой символ ('\0'), завершающий строку).

Для функции strtoul этим последним символом может быть также первый символ-цифра, код которого больше или равен коду '0'+base.

Если значение параметра endptr не равно NULL, то значение параметра endptr определяет адрес указателя, содержащего адрес символа, на котором надо прекратить преобразование (просмотр строки).

Функция strtoul ожидает, что значение параметра nptr — это адрес строки следующего вида:

[пробелы][0][x][цифры]

Если значение параметра base лежит между 2 и 36, то оно используется как основание для преобразования числа (как основание системы исчисления, в которой записано число в строке).

Если значение параметра base равно 0, то начальные символы строки, на которую указывает nptr, используются, чтобы определить основание: если первый символ есть '0' и второй символ есть цифры '1'-'7', то строка интерпретируется как восьмеричное целое; если первый символ есть '0' и второй символ есть 'х' или 'X', то строка интерпретируется как шестнадцатеричное целое; если первый символ есть '1'-'9', то строка интерпретируется как десятичное целое.

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

Функция strtoul возвращает значение типа unsigned long, значение 0 в случае ошибки, при этом переменной errno присваивается значение ERANGE.

Смотри также

atol, strtol

STRUPR (ТС & MSC)

#include <string.h> /*используется только для описания функции*/

char *strupr(string);

char *string;

Описание

Функция strupr преобразует строчные буквы в строке, адрес которой определяется значением параметра string, в заглавные. Строка завершается нулевым символом ('\0').

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

Указатель на преобразованную строку (значение параметра string).

Нет ошибочных кодов возврата.

Смотри также

strlwr

SWAB (TC & MSC)

#include <stdlib.h> /*используется только для описания функции*/

void swab(source, destination, n);

char *source;

char *destination;

int n;

Описание

Функция swab копирует n байтов из области памяти, адрес которой определяется значением параметра source, меняя местами каждую пару смежных байтов, в область памяти, адрес которой задается значением параметра destination. Целое значение n задает количество байтов для пересылки (копирования).

Функция swab обычно используется для преобразования форматов данных от одной ЭВМ к другой, когда используется различный порядок следования байтов в слове.

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

Функция swab не возвращает значения.

Смотри также

fgetc, fputc

SYSTEM (ТС & MSC & ANSI)

#include <process.h> /*используется только для описания функции*/

#include <stdlib.h> /*используется либо файл process.h, либо файл stdlib.h*/

int system(string);

char *string;

Описание

Функция system рассматривает строку, адрес которой задается значением параметра string, как директиву для командного интерпретатора ОС и выполняет строку как команду MS-DOS.

Функция system посылает значения переменных окружения COMSPEC и PATH процессу MS-DOS COMMAND.COM, который используется, чтобы выполнить string-команду.

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

Значение 0, если команда успешно выполнена.

Значение -1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

E2BIG — список аргументов для команды превышает 128 байтов, или область, требуемая для информации окружения, превышает 32 байта.

ENOENT — файл COMMAND.COM не найден.

ENOEXEC — файл COMMAND.COM имеет неправильный формат и невыполняем.

ENOMEM — нет достаточной доступной памяти для выполнения команды; или доступная память испорчена (существуют неправильные блоки, означающие, что процесс, который сделал вызов, был неправильно расположен).

Смотри также

execl, execle, execlp, execv, execve, execvp, exit, exit, spawnl, spawnle, spawnlp, spawnv, spawnve, spawnvp

TAN, TANH (TC & MSC & ANSI)

#include <math.h>

double tan(x);

double tanh(x);

double x;

Описание

Функции tan и tanh возвращают значение тангенса и гиперболического тангенса соответственно от значения аргумента х.

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

Функция tan возвращает значение тангенса от значения аргумента х.

Если значение х близко pi/2 или -pi/2, происходит частичная утрата результата и переменной errno присваивается значение ERANGE.

Если значение х так близко pi/2 или -pi/2, что происходит утрата результата, то функция возвращает 0, переменной errno присваивается значение ERANGE и печатается ошибочное сообщение TLOSS.

Функция tanh возвращает гиперболический тангенс от х.

Смотри также

acos, asin, atan, atan2, cos, cosh, sin, sinh, matherr

TELL (TC & MSC)

#include <io.h> /*используется только для описания функции*/

long tell(handle);

int handle;

Описание

Функция tell используется для получения текущей позиции (внутреннего) указателя файла, связанного с дескриптором handle (ввод/вывод низкого уровня). Позиция представляется как смещение в байтах от начала файла.

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

Смещение до текущей позиции в файле, как длинное целое.

Значение -1L, если задано недействительное значение аргумента handle; при этом переменной errno присваивается значение EBADF.

Для устройств типа терминала и принтера возвращаемое значение не определено.

Смотри также

ftell, lseek, fseek, fgetpos

TEMPNAM (MSC), TMPNAM (TC 2.0 & MSC & ANSI)

#include <stdio.h>

char *tmpnam(string); /*функция доступна в системе программирования MSC*/

char *string;

char *tempnam(dir, prefix); /*функция доступна в системе программирования MSC и в системе программирования ТС версии 2.0*/

char *dir;

char *prefix;

Описание

Функция tmpnam генерирует имя временного файла, который будет использоваться как временный файл. Это имя помещается в string.

Если значение аргумента string равно NULL, то память для строки выделяется (в функции tmpnam) с использованием функции malloc. В случае использования malloc ответственность за последующее освобождение памяти возлагается на пользователя.

Строка символов, которую генерирует функция tmpnam, состоит из цифровых символов от '0' до '9'; числовое значение, представляемое строкой, может быть от 1 до 65535 (это означает, что к функции можно обратиться 65535 раз).

Функция tempnam позволяет создать пользователю временный файл в другом каталоге. Prefix является префиксом к имени файла. Функция просматривает файл с заданным именем в каталогах в следующем порядке:

Условие Используемый каталог для tempnam
Переменная окружения ТМР установлена, и каталог, определенный в ТМР, существует Каталог, определенный в ТМР
Переменная окружения ТМР не установлена или каталог, определенный в ТМР, не существует Аргумент dir для tempnam
Значение аргумента dir равно NULL, или строка, адрес которой определяется значением аргумента dir, задает имя несуществующего каталога P_tmpdir в stdio.h
P_tmpnam не существует \tmp

Если все попытки неудачны, то функция tempnam возвращает значение NULL.

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

Обе функции возвращают указатель на сгенерированное имя, за исключением случая, когда нет возможности создать это имя, или имя является не уникальным.

Значение NULL, если имя не может быть создано или уже существует.

Смотри также

tmpfile

TIME (ТС & MSC & ANSI)

#include <time.h> /*используется только для описания функции*/

long time(timeptr);

long *timeptr;

Описание

Функция time возвращает число секунд, прошедших с момента 00:00:00 по Гринвичу 1 января 1970 г., согласно часам системы.

Возвращаемое значение записывается в переменную, адрес которой задается значением аргумента timeptr, значение аргумента timeptr может быть равным NULL, в этом случае запись возвращаемого значения не производится.

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

Число прошедших секунд как значение типа long.

Нет ошибочных кодов возврата.

Смотри также

asctime, ftime, gmtime, localtime, utime, ctime, difftime, gettime, sttime, stime

TMPFILE (TC 2.0 & MSC & ANSI)

#include <stdio.h>

FILE *tmpfile();

Описание

Функция tmpfile открывает (создавая при этом) новый временный файл и возвращает значение указателя потока для этого файла (высокоуровневый ввод/вывод).

Если файл не может быть открыт, функция tmpfile возвращает значение NULL.

Создаваемый функцией tmpfile временный файл автоматически удаляется, когда происходит нормальное завершение программы или же когда вызывается функция rmtmp, при условии, что текущий рабочий каталог не изменился.

Временный файл открывается в режиме "w+" (смотри описание функции fopen).

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

Указатель на поток, связанный с открытым временным файлом.

Значение NULL, если файл не может быть открыт.

Смотри также

tmpnam, tempnam, rmtmp

TOASCII, _TOLOWER, _TOUPPER (TC & MSC), TOLOWER, TOUPPER (TC & MSC & ANSI)

#include <ctype.h>

int toascii(sim);

int tolower(sim);

int _tolower(sim);

int toupper(sim);

int _toupper(sim);

int sim;

Описание

Макросы/функции toascii, tolower, _tolower, toupper и _toupper преобразуют одиночный символ, код которого задается значением аргумента sim, по различным правилам.

Макро toascii обнуляет старший 7-й бит значения аргумента sim, таким образом преобразованное значение представляет код символа в наборе символов ASCII. Если значение sim уже представляет собой код ASCII-символа, то результат макроса — неизмененное значение аргумента sim.

Макро tolower (в системе программирования MSC) и функция tolower (в системе программирования ТС) преобразует код символа, задаваемый значением аргумента sim, в код соответствующей прописной буквы, если значение sim является кодом строчной буквы. Если значение sim не является кодом строчной буквы, то результат tolower — неизмененное значение аргумента sim.

Макро _tolower является версией tolower, которая используется, когда известно, что значение аргумента sim — код строчной буквы.

Результат _tolower не определен, если значение символа sim не является кодом строчной буквы.

Макро toupper (в системе программирования MSC) и функция toupper (в системе программирования ТС) преобразует код символа, задаваемый значением аргумента sim, в код соответствующей строчной буквы, если значение sim является кодом прописной буквы. Если значение sim не является кодом прописной буквы, то результат toupper — неизмененное значение аргумента sim.

Макро _tolower является версией tolower, которая используется, когда известно, что значение аргумента sim — код прописной буквы. Результат _tolower не определен, если значение символа sim не является кодом прописной буквы.

Для системы программирования ТС в файле ctype.h определены макросы и прототипы:

#define _toupper(c)((с)+'А'—'а')

#define _tolower(c)((c)+'а'—'А')

#define toascii(c)((c)&0x7f)

int tolower(int); /*прототип функции*/

int toupper (int); /*прототип функции*/

Для системы программирования MSC в файле ctype.h определены макросы:

#define toupper(c)(islower(c))?_toupper(c):(с)) /*макро*/

#define tolower(c)(isupper(c))?_tolower(c):(с)) /*макро*/

#define _tolower(c)((c)-'A'+'a')

#define toupper(c)((c)-'a'+'A')

#define toascii(c)((c)&0x7f)

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

Преобразованный символ.

Нет ошибочных кодов возврата.

Смотри также

isalnum, isalpha, isascii, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit

TZSET (TC & MSC)

#include <time.h> /*используется только для описания функции*/

void tzset(void);

int daylight;

long timezone;

char *tzname[2];

Описание

Функция tzset использует переменную текущей среды окружения TZ (смотри описание операционной системы MS-DOS), чтобы присвоить значения трем переменным: daylight, timezone и tzname.

Эти переменные используются функциями ftime и localtime, чтобы провести корректировку времени по Гринвичу (Greenwich Mean Time (GMT)) в локальное время для данного региона.

Значение строковой переменной TZ должно состоять из трехбуквенного имени зоны, такого как PST (Pacific Standart Time), за которым следует число (возможно со знаком), задающее различие в часах между GMT и локальным временем.

За числом может следовать трехбуквенное имя daylight saving time зоны, такое как PDT (Pacific Daylight Saving Time). Например, строка "PST8PDT" представляет правильное значение переменной окружения TZ для зоны Pacific time.

Следующие значения присваиваются переменным daylight, timezone и tzname при вызове tzset:

Timezone различие в секундах между временем по Гринвичу (GMT) и локальным временем.

Daylight ненулевое значение, если daylight saving time определено в переменной среды TZ; иначе значение 0.

Tzname[0] строковое значение трехбуквенного имени зоны из переменной среды TZ.

Tzname[1] строковое значение трехбуквенного имени зоны daylight saving time и пустая строка, если поле daylight saving time не включено в значение переменной среды TZ.

Если переменная окружения TZ не установлена, то по умолчанию устанавливается значение "PST8PDT", которое соответствует времени зоны Pacific.

По умолчанию daylight равняется 1; timezone равняется 28800; tzname[0] равняется -"PST"; и tzname[1] равняется "PDT".

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

Функция не возвращает значения.

Смотри также

asctime, ftime, localtime, ctime, gmtime, stime, time

ULTOA (TC & MSC)

#include <stdlib.h> /*используется только для описания функции*/

char ultoa(value, string, radix);

unsigned long value;

char *string;

int radix;

Описание

Функция ultoa преобразует значение аргумента value типа беззнаковое длинное целое в строку, завершающуюся нулевым символом ('\0'), и записывает результат в память по адресу, задаваемому значением аргумента string.

Значение аргумента radix определяет систему исчисления для преобразования значения value; значение аргумента radix должно быть в пределах от 2 до 36.

Длина строки-результата может быть до 33 символов.

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

Значение аргумента string.

Нет ошибочных кодов возврата.

Смотри также

itоа, ltоа

UMASK (MSC)

#include <sys\types.h>

#include <sys\stat.h>

#include <io.h>

int umask(pmode);

int pmode;

Описание

Функция umask устанавливает маску доступа к файлам (для текущего процесса) на основе значения аргумента pmode.

Маска способа доступа используется для модификации способа доступа для новых файлов, создаваемых посредством функций creat, open или sopen.

Если бит в маске равен 1, то соответствующий бит в файлах, запрашивающих значение доступа, устанавливается в 0 (что соответствует значению "не разрешено"). Если бит в маске равен 0, то соответствующий бит остается неизменным.

Способ доступа для нового файла устанавливается после того, как произойдет первое закрытие файла.

Аргумент pmode является константным выражением, содержащим одну или обе явные константы S_IWRITE и S_IREAD, определенные в sys\stat.h. Когда заданы обе константы, они разделяются операцией ИЛИ (|).

Значение аргумента pmode:

S_IWRITE Запись не разрешена (файл только для чтения)

S_IREAD Чтение не разрешено (файл только для записи)

Например, если в маске установлен бит записи, то новый файл будет доступен только для чтения.

Замечание. Под MS-DOS все файлы доступны для чтения: нет необходимости задавать доступ только для записи.

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

Предыдущее значение pmode.

Нет ошибочных кодов возврата.

Смотри также

chmod, creat, _creat, mkdir, open, _open

UNGETC (TC & MSC & ANSI)

#include <stdio.h>

int ungetc(sim, stream);

int sim;

FILE *stream;

Описание

Функция ungetc возвращает символ, код которого задается значением аргумента sim, обратно в заданный вводной поток stream (ввод/вывод высокого уровня).

Поток stream должен быть буферизован и открыт для чтения.

Последующая операция чтения из потока stream первым символом считает возвращенный символ.

Функция возвращает ошибочное значение, если еще не было операций чтения из потока stream или если символ невозможно вернуть в поток.

Символы, возвращенные в поток посредством ungetc, могут быть потеряны, если функция fseek или rewind будет вызвана раньше, чем возвращенный символ будет вновь считан из потока.

Замечание 1. Попытка вернуть в вводной поток значение EOF игнорируется.

Замечание 2. Предварительно должна быть выполнена хотя бы одна операция чтения из потока.

Замечание 3. Нельзя подряд (без чтения из потока) вернуть в поток более одного символа, в случае повторного вызова ungetc для потока ранее возвращенный символ будет утерян.

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

Значение аргумента sim.

Значение EOF, если попытка вернуть символ оказалась неудачной.

Смотри также

getc, getchar, putc, putchar

UNGETCH (TC & MSC)

#include <conio.h> /*используется только для описания функции*/

int ungetch(sim);

int sim;

Описание

Функция ungetch возвращает символ, код которого задается значением аргумента sim, обратно на консоль с тем, чтобы он был подан на вход следующей операции чтения.

Попытка вернуть символ будет неудачна, если функция будет вызвана два раза подряд без считывания символа с консоли между этими вызовами (буфер возвращенных символов позволяет хранить только один символ).

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

Значение аргумента sim, если операция выполнена успешно.

Значение EOF, если попытка вернуть символ неудачна.

Смотри также

cscanf, getch, getche, ungetch

UNIXTODOS (TC)

#include <dos.h>

void unixtodos(time, pdate, ptime);

long time;

struct date *pdate;

struct time *ptime;

Описание

Функция unixtodos преобразует время в формате ОС UNIX, представленное значением параметра time, и заполняет информацией структуры, адреса которых определяются значениями параметров pdate и ptime.

Смотри также описание функции dostounix.

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

Функция не возвращает значения.

Смотри также

dostounix

UNLINK (ТС & MSC)

#include <io.h> /*используется только для описания функции*/

#include <stdio.h> /*используется либо io.h, либо stdio.h*/

int unlink(pathname);

char *pathname;

Описание

Функция unlink используется для удаления файла, имя которого задается строкой, адрес которой определяется значением аргумента pathname.

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

Значение 0, если удаление файла произведено успешно.

Значение -1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES — имя файла определяет каталог или файл, доступный только для чтения

ENOENT — файл или путь не найдены.

Смотри также

close, remove

UTIME (MSC)

#include <sys\types.h>

#include <sys\utime.h>

int utime(pathname, times);

char *pathname;

struct utimbuf *times;

Описание

Функция устанавливает для файла, имя которого задается строкой, адрес которой определяет значение параметра pathname, время последней модификации.

Процесс должен иметь доступ к файлу по записи, иначе время не может быть изменено.

Хотя структура utimbuf содержит несколько полей для записи времени, под MS-DOS можно задать только время последней модификации.

Если значение аргумента times равно NULL, время модификации устанавливается равным текущему времени. В противном случае, значениие times определяет адрес структуры типа utimbuf (тип структуры определен в файле sys\utime.h).

Время модификации устанавливается из поля modtime этой структуры.

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

Значение 0, если время модификации для файла изменено.

Значение -1 сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES — имя файла определяет каталог или файл, доступный только для чтения.

EMFILE — слишком много открытых файлов (файл должен открываться, чтобы изменить время его модификации).

ENOENT — файл или каталог на пути к нему не найдены.

Смотри также

asctime, ctime, fstat, ftime, gmtime, localtime, stat, time

VA_ARG, VA_END, VA_START (TC & MSC & ANSI)

Использование (MSC)

#include <varargs.h> /*Требуется для совместимости с UNIX V*/

#include <stdarg.h> /*Требуется для совместимости с ANSI С*/

/*Используется только один из этих файлов*/

type va_arg(arg_ptr, type);

void va_end(arg_ptr);

void va_start(arg_ptr);

void va_start(arg_ptr, prev_param);

va_list arg_ptr;

type /*макроимена*/

prev_param

va_alist

va_dcl

Использование (ТС)

#include <stdarg.h> /*Требуется для совместимости с ANSI С*/

void va_start(arg_ptr, prev_param);

type va_arg(arg_ptr, type);

void va_end(arg_ptr);

va_list arg_ptr;

type /*макроимена*/

prev_param

va_alist

Описание

Макросы VA_START, VA_ARG и VA_END предоставляют возможность доступа к аргументам функции, когда функции передается переменное число аргументов.

В MSC можно использовать две версии макросов: макросы, определенные в файле varargs.h, совместимы с UNIX SYSTEM V, а макросы, определенные в файле stdarg.h, соответствуют ANSI С стандарту. В ТС используется только версия stdarg.h.

Обе версии предполагают, что функции передается фиксированное число обязательных аргументов, за которыми следует переменное число необязательных аргументов. Обязательные аргументы описываются как простые формальные параметры функции, и к ним доступ осуществляется по имени.

Доступ к необязательным аргументам осуществляется через макросы, определенные в файле varargs.h или stdarg.h, которые устанавливают указатель на первый необязательный аргумент в списке аргументов, перебирают аргументы из списка и переустанавливают указатель, когда аргумент обработан.

В операционной системе UNIX SYSTEM V макросы, определенные в varargs.h, используются следующим образом:

1) Любые обязательные аргументы для функции могут быть описаны как параметры обычным образом.

2) Последний параметр для функции представляет список необязательных аргументов. Этот параметр должен иметь имя va_alist (не перепутайте с va_list, который определяется как тип для va_alist).

3) Макро va_dcl появляется после определения функции и перед открывающей левой скобкой функции. Эта маска определяет, как завершить описание параметра va_alist, включением завершающей точки с запятой; следовательно, точка с запятой не должна следовать за va_dcl.

4) В пределах функции макро va_start устанавливает arg_ptr на начало списка необязательных аргументов, передающихся функции. Макро va_start должно быть использовано раньше, чем будет в первый раз использовано va_arg. Аргумент arg_ptr должен иметь тип va_list.

5) Макро va_arg делает следующее:

— находит значение заданного type по адресу, определяемому arg_ptr,

— передвигает указатель arg_ptr (т.е. присваивает указателю новое значение) на следующий аргумент в списке, используя размер type, чтобы определить, где начинается следующий аргумент.

Макро va_arg может быть использовано любое число раз в пределах функции последовательной выборки аргументов из списка.

6) После того как все аргументы найдены, va_end устанавливает значение указателя равным NULL.

В системе программирования MSC в файле varargs.h содержатся следующие описания:

typedef char *va_list;

#define va_dcl va_list va_alist;

#define va_start(ap) ap=(va_list)&va_alist

#define va_arg(ap,t)((t*)(ap+=sizeof(t)))[-l]

#define va_end(ap) ap=NULL

Вариант макроопределений, предусмотренный ANSI-С, определенный в файле stdarg.h, предполагает несколько отличный способ использования макро.

1) Все обязательные аргументы функции описываются как параметры обычным образом. Макро va_dcl с stdarg.h не используется.

2) Макро va_start устанавливает arg_ptr на первый необязательный аргумент в списке аргументов, передаваемых функции. Аргумент arg_ptr должен иметь тип va_list. Аргумент prev_param является именем требуемого параметра, предшествующего первому необязательному аргументу из списка аргументов. Макро va_start должно быть использовано раньше первого использования va_arg.

3) Макро va_arg делает следующее:

— находит значение заданного type из расположения, заданного в arg_ptr;

— увеличивает arg_ptr, чтобы тот указывал на следующий аргумент в списке, используя размер type, чтобы определить, где начинается следующий аргумент.

Макро va_arg может быть использовано любое число раз в пределах функции для последовательного выделения аргументов из списка.

4) После того как все аргументы найдены, va_end устанавливает значение указателя равным NULL.

В системе программирования ТС в файле stdarg.h содержатся следующие описания (не удивляйтесь, ЭТО НЕ БУДЕТ РАБОТАТЬ, воспользуйтесь приведенными ниже описаниями для системы программирования MSC (опишите их в своем файле или исправьте включаемый файл).

typedef void *va_list;

#define va_start(ap, parmN) (ap=...)

#define va_arg(ap, type) (*((type *)(ap))++)

#define va_end(ap)

#define _va_ptr(...)

В системе программирования MSC в файле stdarg.h содержатся следующие описания:

typedef char *va_list;

#define va_start(ap,v) ap=(va_list)&v+sizeof(v)

#define va_arg(ap,t) ((t*)(ap+=sizeof(t)))[-1]

#define va_end(ap) ap=NULL

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

Макро va_arg возвращает текущий аргумент; va_start и va_end не возвращают значения.

Смотри также

vfprintf

VFPRINTF, VPRINTF, VSPRINTF (ТС & MSC & ANSI)

Использование (MSC)

#include <stdio.h>

#include <varargs.h> /*для совместимости с UNIX V*/

#include <stdarg.h> /*для совместимости с ANSI С*/

/*используется только один из этих файлов*/

int vfprintf(stream, format_string, arg_ptr);

int vprintf(format_string, arg_ptr);

int vsprintf(buffer, format_string, arg_ptr);

FILE *stream;

char *buffer;

char *format_string;

va_list arg_ptr;

Использование (ТС)

#include <stdio.h>

#include <stdarg.h> /*для совместимости с ANSI С*/

int vfprintf(stream, format_string, arg_ptr);

int vprintf(format_string, arg_ptr);

int vsprintf(buffer, format_string, arg_ptr);

FILE *stream;

char *buffer;

char *format_string;

va_list arg_ptr;

Описание

Функции vfprintf, vprintf и vsprintf форматизируют и выводят данные в поток stream, в стандартный вывод или буфер соответственно.

Эти функции подобны функциям fprintf, printf и sprintf, но допускают (принимают как параметр) указатель на список аргументов — выводимых значений.

Строка, адрес которой определяется значением параметра format_string, интерпретируется так же, как format_string для функции printf; смотри описание printf для получения описания строки format_string.

Параметр arg_ptr имеет тип va_list, который определен в varargs.h и stdarg.h (смотри описание макросов va_arg, va_end, va_start).

Значение параметра arg_ptr задает адрес размещения последовательности аргументов, которые преобразуются и выводятся в соответствии со спецификациями формата вывода, задаваемыми строкой format_string.

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

Число записанных символов.

Смотри также

fprintf, printf, sprintf, va_arg, va_end, va_start

VFSCANF, VSCANF, VSSCANF (TC)

#include <stdio.h>

#include <stdarg.h> /*для совместимости с ANSI С*/

int vfscanf(stream, format_string, arg_ptr);

int vscanf(format_string, arg_ptr);

int vsscanf(buffer, format_string, arg_ptr);

FILE *stream;

char *buffer;

char *format_string;

va_list arg_ptr;

Описание

Функции vfscanf, vscanf и vsscanf вводят и преобразуют к необходимому формату данные из потока stream, из стандартного ввода или из буфера соответственно.

Эти функции подобны функциям fscanf, scanf и sscanf, но принимают как параметр указатель на список аргументов-адресов переменных, которым присваиваются вводимые значения.

Строка, адрес которой определяется значением параметра format_string, интерпретируется так же, как format_string для функции scanf; смотри описание функции scanf для получения описания строки format_string.

Параметр arg_ptr имеет тип va_list, который определен в varargs.h и stdarg.h (смотри описание макросов va_arg, va_end, va_start).

Значение параметра arg_ptr задает адрес размещения последовательности аргументов, значения которых определяют адреса переменных, в которые записывают вводимые и преобразуемые в соответствии со спецификациями формата ввода, задаваемыми строкой format_string, данные.

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

Число успешно обработанных полей формата ввода.

Смотри также

vfprintf, vprintf, vsprintf, va_arg, va_end, va_start, scanf, sscanf, fscanf

WRITE (TC & MSC), _WRITE (TC)

#include <io.h> /*используется только для описания функции*/

int write(handle, buffer, count);

int handle;

char *buffer;

unsigned int count;

int _write(handle, buffer, count); /*функция _write доступна*/

int handle; /*только в системе программирования ТС*/

char *buffer;

unsigned int count;

Описание

Функция write записывает count байтов из области памяти, адрес которой определяется значением параметра buffer, в файл, связанный с дескриптором handle (ввод/вывод низкого уровня). Операция записи начинается с текущей позиции указателя файла.

Если файл открыт для расширения (O_APPEND), операция записи начинается с позиции конца файла. После операции записи указатель файла увеличивается на число реально записанных в файл байтов (это число может быть больше значения count, если файл открыт в текстовом режиме, смотри описание функции open для описания преобразований, выполняемых в текстовом режиме).

Функция _write записывает в файл информацию, всегда полагая, что файл открыт в двоичном режиме. Кроме того, если файл открыт в режиме добавления (O_APPEND), перед записью не производится позиционирование на конец файла.

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

Число байтов, действительно записанных в файл. Возвращаемое значение может не равняться значению аргумента count.

Значение -1 — сигнализирует об ошибке; при этом переменной errno присваивается одно из следующих значений:

EACCES — файл доступен только для чтения или защищен от записи;

EBADF — недействительный дескриптор файла handle;

ENOSPC — нет памяти на устройстве.

Если записывается более 32 Кбайтов (максимальное число, представимое переменной типа int) в файл, возвращаемое значение должно быть типа unsigned int. Однако максимальное число байтов для записи в файл равняется 65534, так как число 65535 (или 0xFFFF) интерпретируется как -1 и служит признаком ошибки.

Смотри также

fwrite, open, read

[an error occurred while processing this directive]