Язык программирования Си. Алфавитный указатель

Алфавитный указатель

  A

  abort

  abs

  absread

  abswrite

  acos

  allocmem

  arc

  arg

  asctime

  asin

  assert

  atan

  atan2

  atexit

  atof

  atoi

  atol

  B

  bar

  bar3d

  bcd

  bdos

  bdosptr

  bioscom

  biosdisk

  biosequip

  bioskey

  biosmemory

  biosprint

  biostime

  brk

  bsearch

  C

  cabs

  calloc

  ceil

  cgets

  chdir

  _chmod

  chmod

  chsize

  circle

  _clear87

  cleardevice

  clearerr

  clearviewport

  clock

  _close

  close

  closegraph

  clreol

  clrscr

  complex

  conj

  _control87

  coreleft

  cos

  cosh

  country

  cprintf

  cputs

  _creat

  creat

  creatnew

  creattemp

  cscanf

  ctime

  ctrlbrk

  D

  delline

  detectgraph

  diftime

  disable

  div

  dosexterr

  dostounix

  drawpoly

  dup

  dup2

  E

  ecvt

  ellipse

  __emit__

  enable

  eof

  execl

  execle

  execlp

  execv

  execve

  execvp

  execvpe

  _exit

  exit

  exp

  F

  fabs

  farcalloc

  farcoreleft

  farfree

  farheapcheck

  farheapcheckfree

  farheapchecknode

  farheapfillfree

  farheapwalk

  farmalloc

  farrealloc

  fclose

  fcloseall

  fcvt

  fdopen

  feof

  ferror

  fflush

  fgetc

  fgetchar

  fgetpos

  fgets

  filelength

  fileno

  fillellipse

  fillpoly

  findfirst

  findnext

  floodfill

  floor

  flushall

  fmod

  fnmerge

  fnsplit

  fopen

  FP_OFF

  _fpreset

  fprintf

  FP_SEG

  fputc

  fputchar

  fputs

  fread

  free

  freemem

  freopen

  frexp

  fscanf

  fseek

  fsetpos

  fstat

  ftell

  ftime

  fwrite

  G

  gcvt

  geninterrupt

  getarccoords

  getaspectratio

  getbkcolor

  getc

  getcbrk

  getch

  getchar

  getche

  getcolor

  getcurdir

  getdate

  getdefaultplatte

  getdfree

  getdisk

  getdrivername

  getdta

  getenv

  getfat

  getfatd

  getfillpattern

  getfillsettings

  getftime

  getgraphmode

  getimage

  getlinesttings

  getmaxcolor

  getmaxmode

  getmaxx

  getmaxy

  getmodename

  getmoderange

  getpalette

  getpalettesize

  getpass

  getpid

  getpixel

  getpsp

  gets

  gettext

  gettextinfo

  gettextsettings

  gettime

  getvect

  getverify

  getviewsettings

  getw

  getx

  gety

  gmtime

  gotoxy

  graphdefaults

  grapherrormsg

  _graphfreemem

  _graphgetmem

  graphresult

  H

  harderr

  hardresume

  hardretn

  heapcheck

  heapcheckfree

  heapchecknode

  heapfillfree

  heapwalk

  highvideo

  hypot

  I

  imag

  imagesize

  initgraph

  inport

  inportb

  insline

  installuserdriver

  installuserfont

  int86

  int86x

  intdos

  intdosx

  intr

  ioctl

  isalnum

  isalpha

  isascii

  isatty

  iscntrl

  isdigit

  isgraph

  islower

  isprint

  ispunct

  isspace

  isupper

  isxdigit

  itoa

  K

  kbhit

  keep

  L

  labs

  ldexp

  ldiv

  lfind

  line

  linerel

  lineto

  localeconv

  localtime

  lock

  log

  log10

  longjmp

  lowvideo

  _lrotl

  _lrotr

  lsearch

  lseek

  ltoa

  M

  malloc

  matherr

  max

  memccpy

  memchr

  memcmp

  memcpy

  memicmp

  memmove

  memset

  min

  mkdir

  MK_FP

  mktemp

  mktime

  modf

  movedata

  moverel

  movetext

  moveto

  movmem

  N

  norm

  normvideo

  nosound

  O

  _open

  open

  outport

  outportb

  outtext

  outtextxy

  _OvrlInitEms

  _OvrlInitExt

  P

  parsfnm

  peek

  peekb

  perror

  pieslice

  poke

  pokeb

  polar

  poly

  pow

  pow10

  printf

  putc

  putch

  putchar

  putenv

  putimage

  putpixel

  puts

  puttext

  putw

  Q

  qsort

  R

  raise

  rand

  randbrd

  randbwr

  random

  randomize

  _read

  read

  real

  realloc

  rectangle

  registerbgidriver

  registerbgifont

  remove

  rename

  restorecrtmode

  rewind

  rmdir

  _rotl

  rotr

  S

  sbrk

  scanf

  searchpath

  sector

  egread

  setactivepage

  setallpalette

  setaspectratio

  setbkcolor

  setblock

  setbuf

  setcbrk

  setcolor

  _setcursortype

  setdate

  setdisk

  setdta

  setfillpattern

  setfillstyle

  setftime

  setgraphbufsize

  setgraphmode

  setjmp

  setlinestyle

  setlocale

  setmem

  setmode

  setpalette

  setrgbpalette

  settextjustify

  settextstyle

  settime

  setusercharsize

  setvbuf

  setvect

  setverify

  setviewport

  setvisualpage

  setwritemode

  signal

  sin

  sinh

  sleep

  sopen

  sound

  spawn

  sprintf

  sqrt

  srand

  sscanf

  stat

  _status87

  stime

  stpcpy

  strcat

  strchr

  strcmp

  strcmpi

  strcoll

  strcpy

  strcspn

  strdup

  _strerror

  strerror

  strftime

  stricmp

  strlen

  strlwr

  strncat

  strncmp

  strncmpi

  strncpy

  strnicpm

  strnset

  strpbrk

  strrchr

  strrev

  strset

  strspn

  strstr

  strtod

  strtok

  strtol

  stroul

  strupr

  strxfrm

  swab

  system

  T

  tan

  tanh

  tell

  textattr

  textbackground

  textcolor

  textheight

  textmode

  textwidth

  time

  tmpfile

  tmpnam

  toascii

  _tolower

  tolower

  _toupper

  toupper

  tzset

  U

  ultoa

  ungetc

  ungetch

  unixtodos

  unlink

  unlock

  V

  va_arg

  va_end

  va_start

  vfprintf

  vfscanf

  vprintf

  vscanf

  vsprintf

  vsscanf

  W

  wherex

  wherey

  window

  _write

  write

  РАЗНЫЕ

  _8087

  _argc

  _argv

  _ctype

  daylight

  directvideo

  environ

  errno

  doserrno

  sys_errlist

  sys_nerr

  _fmode

  _heaplen

  _openfd

  _osmajor

  _osminor

  _psp

  _stklen

  timezone

  tzname

  _version

  _wscroll


The page cannot be found
The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.

Please try the following:

  • If you typed the page address in the Address bar, make sure that it is spelled correctly.
  • Open the home page, and then look for links to the information you want.
  • Click the Back button to try another link.

HTTP 404 - File not found
Internet Information Services

Technical Information (for support personnel)

  • More information:
    Microsoft Support


cpp

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

Синтаксис          extern int _8087;

Объявлено в        dos.h

Описание           Переменная _8087 устанавливается в нену-
                   левое значение (1, 2 или 3), если при загрузке
                   обнаруживается сопроцессор с плавающей точкой
                   (8087, 80287 или 80387 соответственно). Иначе пе-
                   ременная устанавливается в 0. Эта проверка может
                   быть заменена на установку переменной окружения в
                   YES или NO. (Команды SET 87=YES или SET 87=NO;
                   пробелов в знаке равенства быть не должно). В
                   этом случае переменная _8087 установится в 1 или
                   0. Более подробная информация об этой переменной
                   содержится в Главе 4 Руководства программиста
                   "Модели памяти, операции с плавающей точкой и
                   оверлеи.


cpp

__emit__
 Функция            Вставляет значение литерала непосредственно в код.

 Синтаксис          #include
                    void __emit__(argument,...);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция __emit__ позволяет вам вставить значение
                    литерала непосредственно в объектный код, как если
                    бы он был откомпилирован. Она используется для ге-
                    нерирования машинных инструкций без использования
                    встроенных операторов ассемблера.

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

                    Предупреждение! Этой функцией могут воспользовать-
                    ся только программисты, хорошо ориентирующиеся в
                    машинном языке процессоров семейства 80х86. Вы мо-
                    жете использовать данную функцию для помещения
                    произвольных байтов в машинный код функции. Если
                    эти байты будут неправильными, то это может при-
                    вести к неисправимой ошибке. Turbo C++ не анализи-
                    рует код, помещаемый таким образом. Если эти ма-
                    шинные команды изменяют значение регистров или пе-
                    ременных, то Turbo C++ не знает об этом и не сох-
                    раняет их перед использованием данного кода, как
                    он делает это при работе со встроенным ассембле-
                    ром, где он, например, распознает использование
                    регистров SI и DI и сохраняет их. Здесь же вы пре-
                    доставлены сами себе.

                    Вы должны передать __emit__ по меньшей мере 1 ар-
                    гумент; реальное число может быть больше. Аргумен-
                    ты этой функции рассматриваются не так, как других
                    функций: никаких преобразований они не претерпева-
                    ют.

                    Имеется специальное ограничение формы аргументов
                    __emit__. Они должны иметь форму константных выра-
                    женй, т.е. чтобы их можно было использовать для
                    инициализации статических объектов. Это означает,
                    что в выражениях можно использовать целые констан-
                    ты, константы с плавающей точкой и адреса стати-
                    ческих объектов. Значение записывается в точке вы-
                    зова функции также, как если они используются для
                    инициализации данных. Можно также использовать ад-
                    реса параметров и автоматических переменных, плюс
                    или минус константное смещение. Для этих аргумен-
                    тов запоминается смещение переменной в BP.

                    Количество байт, помещаемых в объектный код, опре-
                    деляется типом аргумента, за исключением следующих
                    случаев:

                    - знаковая целая константа (например 0х90) значе-
                    ние которой лежит в диапазоне от 0 до 255 рассмат-
                    ривается как символ.

                    - Когда используется адрес автоматической перемен-
                    ной или параметра, то если смещение переменной в
                    BP лежит в диапазоне от -128 до 127 то записывает-
                    ся байт, иначе слово.

                    Просто байты записываются следующим образом:

                    __emit__(0x90);

                    Если вы хотите записать слово, однако его значение
                    меньше 255, то просто преобразуйте его в unsigned:

                    __emit__(0xB8,(unsigned)17);

                    или

                    __emit__(0xB8, 17u);

                    Двух- или четырехбайтовые адреса можно прямо ука-
                    зать с помощью типов: void near * и void far *,
                    соответственно.

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

 Переносимость      __emit__ уникальна для семейства машин 80х86.

 Пример:

 #include

 int main()
 {
    /* вставить код, который генерирует печать экрана, через
       прерывание int 5 */
    __emit__(0xcd,0x05);  /* INT 05h */
    return 0;
 }


cpp

_argc
Функция            Содержит количество аргументов командной строки.

Синтаксис          extern int _argc;

Объявлено в        dos.h

Описание           _argc имеет значение argc, передаваемое функ-
                   ции main при запуске программы.


cpp

_argv
Функция            Массив указателей на аргументы командной строки.

Синтаксис          extern char * _argv[];

Объявлено в        dos.h

Описание           _argv указывает на  массив, содержащий  аргу-
                   менты командной строки (элементы argv[]), переда-
                   ваемые функции main при запуске программы.


cpp

_chmod
 Функция            Изменяет режим доступа к файлу.

 Синтаксис          #include
                    #include
                    int _chmod(const char * path, int func[,int attrib]);

 Файл, содержащий   io.h
 прототип

 Описание           Функция _chmod может изменять или устанавливать
                    атрибуты файлов DOS. Если func равен 0, то функ-
                    ция возвращает текущие атрибуты DOS для данного
                    файла. Если func равен 1, то атрибуты устанавли-
                    ваются в сооответствии с аргументом attrib.

                    attrib может быть одной из следующих символьных
                    константных значений (определенных в dos.h):

                      FA_RDONLY   только чтение
                      FA_HIDDEN   скрытый файл
                      FA_SYSTEM   системный файл
                      FA_LABEL    метка тома
                      FA_DIREC    директория
                      FA_ARCH     архив

 Возвращаемое       При успешном завершении _chmod возвращает слово с
 значение           атрибутами файла; иначе, возвращается значение -1.

                    В случае ошибки errno присваивается одно из сле-
                    дующих значений:

                      ENOENT - Маршрут или имя файла не найдены
                      EACCES - Отказ доступа

 Переносимость      _chmod уникальна для DOS.

 Смотрите также     chmod _creat

 Пример:

 #include
 #include
 #include
 #include

 int get_file_attrib(char *filename);

 int main(void);
 {
    char filename[128];
    int attrib;
    printf("Введите имя файла:");
    scanf("%s",filename);
    attrib = get_file_attrib(filename);
    if(attrib == -1)
       switch(errno)
       {
          case ENOENT:printf("Маршрут или имя файла не найдены\n");
                      break;
          case EACCES:printf("Отказ доступа\n");
                      break;
          default:    printf("Ошибка номер %d\n",errno);
                      break;
       }
    else
    {
       if(attrib & FA_RDONLY)
          printf("%s имеет атрибут только на чтение\n",filename);
       if(attrib & FA_HIDDEN)
          printf("%s - cкрытый файл\n",filename);
       if(attrib & FA_SYSTEM)
          printf("%s - системный файл \n",filename);
       if(attrib & FA_LABEL)
          printf("%s - метка тома\n",filename);
       if(attrib & FA_DIREC)
          printf("%s - директория\n",filename);
       if(attrib & FA_ARCH)
          printf("%s - архивный файл\n",filename);
    }
    return 0;
 }
 /*  возвращает атрибуты файла */
 int get_file_attrib(char *filename)
 {
    return(_chmod(filename,0));


cpp

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

 Синтаксис          #include
                    insigned int _clear87(void);

 Файл, содержащий   float.h
 прототип

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

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

 Смотрите также     _control7, _fpreset _status7.

 Пример:

 #include
 #include
 int main(void)
 {
    float x;
    double y=1.5e-100;
    printf("Состояние 8087 перед ошибкой: %X\n",_status87());
    x = y; /* создание состояния переполнения и потери точности */
    printf("Состояние 8087 после ошибки: %X\n",_status87());
    _clear87();
    printf("Состояние 8087 после обнуления: %X\n",_status87());
    return 0;


cpp

_close
 Функция            Закрывает файл.

 Синтаксис          #include
                    int _close(int handle);

 Файл, содержащий   io.h
 прототип

 Описание           _close закрывает файл, связанный с дескриптором
                    handle. Аргумент handle обозначает дескриптор
                    файла, присваиваемый ему при вызове функций
                    _creat, creat, creatnew, creattemp, dup, dup2,
                    _open или open.

                    Примечание. Эта функция не записывает символ
                    Ctrl-Z в конец файла. Если вы хотите завершить
                    файл этим символом, его следует явно вывести.

 Возвращаемое       При успешном завершении _close
 значение           возвращает значение 0. Иначе возвращается значе-
                    ние -1.

                    Если аргумент handle не является дескриптором от-
                    крытого файла, это приводит к неудачному заверше-
                    нию операции. errno получает следующее значение:

                      EBADF - Неверный номер файла.

 Переносимость      _close уникальна для DOS.

 Смотрите также     close _creat open read write

 Пример:

 #include
 #include
 #include
 int main(void)
 {
    int handle;
    char buf[11] = "0123456789";
    /* создать файл содержащий 10 байт */
    handle = open("DUMMY.FIL",O_CREAT);
    write(handle,buf,strlen(buf));
    /* закрыть файл */
    _close(handle);
    return 0;


cpp

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

 Синтаксис          #include
                    unsigned int _control87(unsigned int newcw,
                                            unsigned int mask);

 Файл, содержащий   float.h
 прототип

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

                    Слово управления плавающей точки имеет тип
                    unsigned int, в котором бит за битом перечислены
                    режимы операций с плавающей точкой, а именно: ре-
                    жимы точности, бесконечности и округления. Изме-
                    нение этих режимов позволяет маскировать исключи-
                    тельные состояния операций с плавающей точкой.

                    _control87 сравнивает биты в mask с битами в
                    newcw. Если бит в mask равен 1, то соответствую-
                    щий бит в new содержит новое значение для такого
                    же бита в слове управления операций с плавающей
                    точкой, а _control87 устанавливает этот бит в
                    слове управления в новое значение.

                    Пример:

                    Исходное слово управления: 0100  0011  0110  0011
                    mask                       1000  0001  0100  1111
                    newcw                      1110  1001  0000  0101
                    Изменяющиеся биты          1xxx  xxx1  x0xx  0101

                    Если mask равен 0, то _control87 возвращает слово
                    управления операциями с плавающей точкой без из-
                    менения.

                    _control87 не изменяет бит Denormal, поскольку
                    Turbo C++ использует ненормальную обработку иск-
                    лючительных ситуаций.

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

 Переносимость      _control87 уникальна для DOS.

 Смотрите также     _clear7, _fpreset signal _status7.

 Пример:            /* маскирование исключительных ситуаций вычисле-
                    ний с плавающей точкой */
                    _control87(MCW_EM,MCW_EM);


cpp

_creat
 Функция            Создает новый файл или перезаписывает существующий.

 Синтаксис          #include
                    int _creat(const char * path, int attrib);

 Файл, содержащий   io.h
 прототип

 Описание           _creat берет аргумент attrib -  слово атрибутов
                    DOS. Файл всегда открывается в двоичном режиме.
                    При успешном создании файла указатель файла уста-
                    навливается на начало этого файла. Файл открыва-
                    ется сразу для чтения и записи.

                    Если файл уже существует, то его размер устанав-
                    ливается равным 0. (Это эквивалентно удалению
                    файла и созданию нового файла с этим же именем).

                    Аргумент attrib в _creat может быть одной из сле-
                    дующих констант (определенных в dos.h):

                      FA_DRONLY   Только чтение
                      FA_HIDDEN   Скрытый файл
                      FA_SYSTEM   Системный файл

 Возвращаемое       При успешном завершении _creat возвращает дескрип-
 значение           тор нового файла, неотрицательное число; иначе воз-
                    вращается -1.

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

                      ENOENT - Маршрут или имя файла не найдены
                      EMFILE - Слишком много открытых файлов
                      EACCES - Отказ доступа

 Переносимость      _creat уникальна для DOS.

 Смотрите также     _chmod chsize _close close creat creatnew
                    creattemp
 Пример:

 #include
 #include
 #include
 #include
 #include
 #include
 #include

 int main(void)
 {
    int handle;
    char buf[] = "0123456789";
    /* создать файл для чтения и записи в двоичном режиме */
    if((handle = _creat("DUMMY.FIL",0)) < 0)
    {
       switch(errno)
       {
       case ENOENT: printf("Ошибка:Маршрут или имя файла не найдены.\n");
                    break;
       case EMFILE: printf("Ошибка:Слишком много открытых файлов.\n");
                    break;
       case EACCES: printf("Ошибка: Отказ доступа\n");
                    break;
       default:     printf("Ошибка при создании файла\n");
                    break;
       }
       exit(1);
    }
    /* записать в файл строку с завершающим нулевым символом */
    write(handle,buf,strlen(buf)+1);
    /* закрыть файл */
    close(handle);
    return 0;


cpp

_ctype
Функция            Массив атрибутов символа.

Синтаксис          extern char _ctype[];

Объявлено в        ctype.h

Описание           _ctype.h является массивом атрибутов символа,
                   индексируемого по значению ASCII + 1. Каждый эле-
                   мент является набором бит, описывающих символ.


cpp

_exit
 Функция            Прекращает выполнение программы.

 Синтаксис          #include
                    void _exit(int status);

 Файл, содержащий   process.h, stdlib.h
 прототип

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

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

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

 Переносимость      _exit доступна в системе UNIX.

 Смотри также       abort atexit exec.., exit spawn..

 Пример:

 #include
 #include

 void dose(void);

 int main(void)
 {
    atexit(dose);
    _exit(0);
    return 0;
 }
 void dose()
 {
    printf("Привет\n");


cpp

_fmode
Функция            Режим преобразования файла по умолчанию.

Синтаксис          extern int _fmode;

Объявлено в        fcntl.h

Описание           Данная переменная определяет, в каком режиме
                   (текстовом или двоичном), файлы будут открываться
                   и преобразовываться. По умолчанию, значением
                   _fmode является O_TEXT, что означает, что файлы
                   будут читаться в текстовом режиме. Если же _fmode
                   получит значение O_BINARY, файлы будут открыты и
                   прочитаны в двоичном режиме. (O_TEXT и O_BINARY
                   определены в файле fcntl.h).

                   В текстовом режиме, при вводе, комбинация возврат
                   каретки/перевод строки (CR/LF) преобразуется в
                   один символ перевода строки (LF). При выводе,
                   преобразование обратное - символы LF преобразуют-
                   ся в комбинацию CR/LF.
                   В двоичном режиме такое преобразование не произ-
                   водятся.
                   Вы можете изменить режим по умолчанию, устанавли-
                   ваемый в _fmode, если для библиотечных функций
                   fopen, fdopen, frеopen вы определите аргумент
                   type, равный t (для текстового режима) или b (для
                   двоичного режима). Также, аргумент access функции
                   open может содержать либо O_BINARY, либо O_TEXT,
                   который явно определяет режим (текстовый или дво-
                   ичный) открытия файла (он определяется аргументом
                   pathname функции open).


cpp

_fpreset
 Функция            Выполняет рестарт математического пакета операций
                    с плавающей точкой.

 Синтаксис          #include
                    void _fpreset();

 Файл, содержащий   float.h
 прототип

 Описание           Функция _fpreset выполняет рестарт математического
                    пакета операций с плавающей точкой. Данная функ-
                    ция обычно используется вместе с функциями
                    signal, system, или функциями exec... или
                    spawn...

                    Примечание. При работе под операционной системой
                    DOS, если в программе используется математический
                    сопроцессор 80x87, "дочерний" процесс (выполняе-
                    мый посредством функций system, exec... или
                    spawn...), может изменить состояние операций с
                    плавающей точкой "родительского" процесса.

                    Если вы используете сопроцессор 80x87, примите
                    следующие предосторожности:

                    - Не вызывайте функции exec..., spawn... или
                    system, пока выражение с плавающей точкой не вы-
                    числено.

                    - Для установки операций с плавающей точкой после
                    использования функций system, exec... или
                    spawn... вызывайте функцию _fpreset (если только
                    есть какой-либо шанс выполнения дочерним процес-
                    сом операций с плавающей точкой, посредством соп-
                    роцессора 8087/80287).

 Возвращаемое       Отсутствует.
 значение

 Смотрите также     clear7, _control7, exec..,  spawn..,
                    _status7, system

 Пример:

 #include
 #include
 #include
 #include
 #include
 #include

 jmp_buf reenter;

 /* определим программу обработки ошибочных ситуаций операций с
    плавающей точкой */
 void float_trap(int sig)
 {
    printf("Прерывание по ошибке операций с плавающей точкой.\n");
    printf("Для продолжения работы нажмите любую клавишу...\n");
    getch();
    /* рестарт сопроцессора или эмулятора */
    _fpreset();
    /* вернутся в точку, в которой возникла ошибка */
    longjmp(reenter,-1);
 }
 int main(void)
 {
    float one = 3.14, two = 0.0;
    /* установить программу обработки исключительных ситуаций операций
       с плавающей точкой */
    if(signal(SIGFPE,float_trap) == SIG_ERR)
    {
       printf("Ошибка при установке программы обработки прерываний\n");
       exit(3);
    }
    printf("Генерация математической ошибки. Нажмите клавишу...\n");
    getch();
    if(setjmp(reenter)==0)
      one /* two;
    printf("Возврат после обработки прерывания.\n");
    return 0;


cpp

_graphfreemem
 Функция            Пользователь освобождает графическую память.

 Синтаксис          #include
                    void far _graphfreemem(void var
                     *ptr,unssigned size);

 Файл, содержащий   graphics.h
 прототип

 Описание           Графическая библиотека вызывает _graphfreemem для
                    освобождения памяти, ранее занятой с помощью
                    _graphgetmem. Вы можете управлять распределением
                    памяти графической библиотеки посредством просто-
                    го определения вашей собственной версии
                    _graphfreemem (вы должны определить ее так, как
                    показано в описании). Начальная версия этой прг-
                    раммы просто вызывает free.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     _graphgetmem setgraphbufsize

 Пример:

 #include
 #include
 #include
 #include
 #include

 #define NONSENSE -50

 int main(void)
 {
 /* Инициация ошибки */
 int graphdriver = NONSENSE, gmode, errorcode;
 int midx,midy;

 /* обнуление текстового экрана */
 clrscr();
 printf("Для инициализацмм графики нажмите любую клавишу...");
 getch();
 clrscr();

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();

 /* выдать соответствующее ошибке сообщение */
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* вывести сообщение */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,"Для выхода из графического режима
                        нажмите любую клавишу ");
 /* очистка */
 getch();
 closegraph();
 return 0;
 }
 /* вызывается ядром графической системы для выделения памяти */
 void far *far _graphgetmem(unsigned size)
 {
    printf("Вызвана _graphgetmem для выделения %d байт\n",size);
    printf("Нажмите любую клавишу:");
    getch();
    printf("\n");
    /* выделить память */
    return farmalloc(size);
 }
 /* вызывается ядром графической системы для освобождения памяти */
 void far _graphfreemem(void far *ptr, unsigned size)
 {
    printf("Вызвана _graphfreemem для освобождения %d байт\n",size);
    printf("Нажмите любую клавишу:");
    getch();
    printf("\n");
    /* освободить память */
    return farfree(ptr);


cpp

_graphgetmem
 Функция            Пользователь захватывает графическую память.

 Синтаксис          #include
                    void far _graphgetmem(unsigned size);

 Файл, содержащий   graphics.h
 прототип

 Описание           Графическая библиотека вызывает _graphgetmem
                    (но не пользовательская программа) для выделения
                    памяти для внутренних буферов, графических драй-
                    веров и шрифтов. Вы можете управлять распределе-
                    нием памяти графической библиотекой посредством
                    простого определения вашей собственной версии
                    _graphgetmem (вы должны определить ее так, как
                    показано в описании). Начальная версия этой прг-
                    раммы просто вызывает malloc.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     _graphfreemem initgraph setgraphbufsize

 Пример:

 #include
 #include
 #include
 #include
 #include

 #define NONSENSE -50

 int main(void)
 {
 /* Инициация ошибки */
 int graphdriver = NONSENSE, gmode, errorcode;
 int midx,midy;

 /* обнуление текстового экрана */
 clrscr();
 printf("Для инициализации графики нажмите любую клавишу...");
 getch();
 clrscr();

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();

 /* выдать соответствующее ошибке сообщение */
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* вывести сообщение */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,"Для выхода из графического режима
                        нажмите любую клавишу ");
 /* очистка */
 getch();
 closegraph();
 return 0;
 }
 /* вызывается ядром графической системы для выделения памяти */
 void far *far _graphgetmem(unsigned size)
 {
    printf("Вызвана _graphgetmem для выделения %d байт\n",size);
    printf("Нажмите любую клавишу:");
    getch();
    printf("\n");
    /* выделить память */
    return farmalloc(size);
 }
 /* вызывается ядром графической системы для освобождения памяти */
 void far _graphfreemem(void far *ptr, unsigned size)
 {
    printf("Вызвана _graphfreemem для освобождения %d байт\n",size);
    printf("Нажмите любую клавишу:");
    getch();
    printf("\n");
    /* освободить память */
    return farfree(ptr);


cpp

_heaplen
Функция            Содержит длину локального heap.

Синтаксис          extern unsigned _heaplen;

Объявлено в        dos.h

Описание           _heaplen определяет размер  локального heap в ма-
                   лых моделях данных (tiny, small, mediuim).
                   _heaplen не существует в больших моделях данных
                   (compact, large, huge), т.к. они не имеют локаль-
                   ного heap.

                   В моделях small и medium размер сегмента данных
                   вычисляется следующим образом:

                         data segment [small,medium] = global data +
                                                       heap + stack

                   где размер стека может быть получен по _stklen.
                   Если _heaplen установлен в 0, то программа выде-
                   ляет 64Кбайт для сегмента данных, и действитель-
                   ный размер heap равен:

                         64К - (global data + stack) байт

                   По умолчанию _heaplen равен 0, так что вам выде-
                   ляется сегмент данных 64К, пока вы не укажете
                   другое значение _heaplen.
                   В модели tiny все (включая код) находится в одном
                   сегменте, поэтому в сегмент данных включается код
                   и 256 байт для PSP.

                         data segment [tiny] = 256 + code + global data +
                                               heap + stack

                   Если _heaplen равен 0 в модели tiny, то действи-
                   тельный размер heap получается вычитанием PSP,
                   кода, глобальных данных и стека из 64К.

                   В моделях compact и large не существует локально-
                   го heap, поэтому сегмент данных равен

                         data segment [compact,large] = global data +
                                                        stack
                   В модели huge стек является отдельным сегментом,
                   а каждый модуль имеет собственный сегмент данных.

Смотрите также     _stklen


cpp

_lrotl
 Функция            Циклический сдвиг влево длинного целого.

Синтаксис #include
          unsigned long _lrotl(unsigned long val,int count);

 Файл содержащий    stdlib.h
 прототип

 Описание         _lrotl производит циклический сдвиг влево
                  на count бит. val имеет тип unsigned long.

 Возвращаемое  _lrotl возвращает значение val сдвинутое
 значение      влево на count бит.

 Переносимость      _lrotl уникальна для DOS.

 Смотрите также     _lrotr _rotl _rotr

 Пример:

 #include
 #include

 int main(void)
 {
    unsigned long result;
    unsigned long value = 100;
    result = _lrotl(value,1);
    printf("Значение %lu сдвинутое влево на 1 бит
            равно %lu\n", value,result);
    return 0;


cpp

_lrotr
 Функция    Циклический сдвиг вправо длинного целого.

Синтакс   #include
          unsigned long_lrotr(unsigned long val, int count);

 Файл содержащий    stdlib.h
 прототип

 Описание           _lrotr производит циклический сдвиг
                    вправо на count бит. val имеет тип
                    unsigned long.

 Возвращаемое     _lrotr возвращает значение val сдвинутое
 значение         влево на count бит.

 Переносимость      _rotl уникальна для DOS.

 Смотрите также     _lrotl _rotl _rotr

 Пример:

 #include
 #include

 int main(void)
 {
    unsigned long result;
    unsigned long value = 100;
    result = _lrotr(value,1);
    printf("Значение %lu сдвинутое вправо на 1 бит равно
            %lu\n", value,result);
    return 0;


cpp

_open
Функция            открывает файл для чтения или записи.

Синтаксис          #include
                   int _open(const char *filename, int oflags);

Файл, содержащий   io.h
прототип

Описание           Функция _open открывает файл, имя которого опреде-
                   лено параметром filename, и подготавливает его
                   для для последующих операций чтения и/или записи,
                   определяемых параметром oflags. Файл открывается
                   в режиме, определяемом _fmode.

                   Для функции _open параметр oflags в DOS 2.x огра-
                   ничивается тремя значениями: O_RDONLY, O_WRONLY
                   O_RDWR. В DOS 3.x вводятся дополнительные значе-
                   ния:

                   O_NOINHERIT - Включается, если файл не может быть
                                 передан дочерней программе.

                   O_DENYALL - Позволяет доступ к файлу только по
                                 текущему номеру handle.

                   O_DENYWRITE - Позволяет любому другому открытию
                                 файла только чтение.

                   O_DENYREAD - Позволяет любому другому открытию
                                 файла только запись.

                   O_DENYNONE - Разрешает разделенное открытие фай-
                                 ла.

                   Эти символические константы (O_...) определены в
                   файле fcntl.h.

                   В единственный вызов функции open под версией DOS
                   3.x может быть включено только одно из значений
                   O_DENYxxx. Эти атрибуты разделения доступа к фай-
                   лу даны в дополнение к операциям блокировки.

                   Максимальное число одновременно открытых файлов
                   задается, как параметр, при конфигурировании сис-
                   темы.

Возвращаемое       При успешном завершении _open возвращает целое
значение           неотрицательное число handle - логический номер
                   открытого файла. Указатель файла (указатель теку-
                   щей позиции) устанавливается на начало файла. При
                   ошибке _open возвращает значение -1, и переменная
                   errno получает одно из следующих значений:

                   ENOENT - Маршрут или имя файла не найдены;
                   EMFILE - Слишком много открытых файлов;
                   EACCES - Доступ запрещен;
                   EINVACC - Неверный код доступа.

Переносимость      Функция _open уникальна для DOS.

Смотрите также      open read sopen


cpp

_openfd
Функция            Массив режимов доступа.

Синтаксис          extern unsigned int _openfd[];

Объявлено в        io.h

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


cpp

_osmajor,_osminor
Функция            Содержит старший и младший номер версии DOS.

Синтаксис          extern unsigned char _osmajor;
                   extern unsigned char _osminor;

Объявлено в        dos.h

Описание           Старший и младший номер версии доступны при помощи
                   переменных _osmajor и _osminor. _osmajor содержит
                   номер версии, а _osminor - расширение. Например,
                   если вы работаете с версией DOS 3.2, то _osmajor
                   будет иметь значение 3, а _osminor - 20. Эти пе-
                   ременные могут оказаться полезны, если вы захоти-
                   те написать программы, функционирующие под управ-
                   лением операционной системы MS-DOS версий 2.х и
                   3.х. Некоторые библиотечные функции работают
                   по-разному в зависимости от номера версии DOS, в
                   то время как другие работают только с версией DOS
                   3.х. (Например, посмотрите функции _open,
                   creatnew, ioctl в справочной секции данного руко-
                   водства).


cpp

_OvrlInitEms
Функция            Инициализирует систему подкачки памяти расширения
                   для администратора оверлеев.

Синтаксис          #include
                   int cdecl far _OvrlInitEms(unsigned emsHandle,
                   unsigned firstPage, unsigned pages);

Файл, содержащий   dos.h
прототип

Описание           _OvrlInitEms проверяет наличие памяти расширения
                   (ищет драйвер EMS), и выделяет в ней память. Если
                   параметр emsHandle равен 0, то администратор
                   оверлеев выделяет страницы памяти EMS и использу-
                   ет их для подкачки оверлеев. Если emsHandle не
                   равен 0, то он должен быть допустимым дескрипто-
                   ром EMS; его будет использовать администратор
                   оверлеев. В этом случае вы должны указать
                   firstPage, с которой должна начинаться подкачка,
                   в этой области.

                   В обоих случаях, ненулевой параметр pages опреде-
                   ляет максимальное число страниц, которые могут
                   быть использованы администратором оверлеев.

Возвращаемое       _OvrlInitEms возвращает 0, если администратор овер-
значение           леев может использовать для подкачки память расши-
                   рения.

Переносимость      _OvrlInitEms уникальна для Turbo C++.

Смотрите также      _OvrlInitExt

Пример:

#include

int main(void)
{
   /* запрос к администратору оверлеев на использование
      16 страниц (256К) памяти расширения */
   _OvrlInitEms(0,0,16);
    .
    .
    .
}

cpp

_OvrlInitExt
Функция            Инициализирует систему подкачки дополнительной
                   памяти для администратора оверлеев.

Синтаксис          #include
                   int cdecl far _OvrlInitExt(unsigned long
                   startAddress, unsigned long length);

Файл, содержащий   dos.h
прототип

Описание           _OvrlInitExt проверяет наличие дополнительной
                   памяти, используя известные методы поиска других
                   программ, также использующих дополнительную па-
                   мять, и выделяет в ней память. Если параметр
                   startAdress равен 0, администратор оверлеев опре-
                   деляет начальный адрес и использует, чаще всего,
                   размеры оверлеев. Если startAdress не равен 0, то
                   администратор оверлеев использует память выше
                   этого адреса.

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

Возвращаемое       _OvrlInitExt возвращает 0, если администратор овер-
значение           леев может использовать для подкачки дополнитель-
                   ную память.

Переносимость      _OvrlInitExt уникальна для Turbo C++.

Смотрите также      _OvrlInitEms

Пример:

#include

int main(void)
{
    /* использовать дополнительную память с адреса 0x200000L (2Mб)
       причем столько, сколько необходимо */
   _OvrlInitExt(0x200000L,0);
    .
    .
    .


cpp

_psp
Функция            Содержит адрес префикса сегмента программы (PSP).

Синтаксис          extern unsigned int _psp;

Объявлено в        dos.h

Описание           _psp содержит адрес сегмента PSP (префикс прог-
                   раммного сегмента) для текущей программы. PSP
                   представляет собой дескритор процесса DOS; он со-
                   держит специальную информацию DOS о программе.
                   Подробную информацию о PSP вы найдете в документе
                   "Справочное руководство программиста по DOS".


cpp

_read
Функция            Считывает данные из файла.

Синтаксис          #include
                   int _read(int handle, void *buf, unsigned len);

Файл, содержащий   io.h
прототип

Описание           Функция _read делают попытку считать len байт из
                   файла, связанного с handle, в буфер, адресуемый
                   параметром buf. Функция _read является непосредс-
                   твенным вызовом операции чтения DOS.

                   В файле, открытом в текстовом режиме, функция
                   read не удаляет символы "возврат каретки".

                   Параметр handle - это тот же самый параметр, что
                   получают на выходе функций creat, open, dup,
                   dup2.

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

                   _read может считать за один раз до 65534 байт,
                   поскольку 65535 (0xFFFF) это -1, индикатор ошибки.

Возвращаемое       При успешном завершении возвращается положительное
значение           целое число, являющееся числом байтов, помещенных
                   в буфер; По концу файла (EOF), функция возвращает
                   нуль. При ошибке _read возвращает -1, и глобаль-
                   ной переменной errno присваивает одно из следую-
                   щих значений:

                       EACCES - Доступ запрещен;
                       EBADF -  Неверный номер файла.

Переносимость     _read уникальна для DOS.

Смотрите также      _open read _write

Пример:

#include
#include
#include
#include
#include
/* #include */

int main(buffer)
{
   void *buf;
   int handle,bytes;
   buf = malloc(10);
   /* Поиск в текущей директории файла с именем TEST.$$$ и
      попытка чтения из него 10 байт. Перед запуском этой
      программы необходимо создать файл TEST.$$$ */
   if((handle = open("TEST.$$$",O_RDONLY|O_BINARY))== -1)
   {
      printf("Ошибка при открытии файла.\n");
      exit(1);
   }
   if((bytes = _read(handle,buf,10))==-1)
   {
      printf("Ошибка чтения.\n");
      exit(1);
   }
   printf("Считано %d байт.\n",bytes);
   return 0;


cpp

_rotl
Функция            Циклический сдвиг влево целого без знака.

Синтаксис          #include
                   unsigned _rotl(unsigned value, int count);

Файл, содержащий   stdlib.h
прототип

Описание           _rotl производит циклический сдвиг значения value
                   влево на count разрядов. value рассматривается
                   как целое без знака.

Возвращаемое       _rotl возвращает value сдвинутое циклически на
значение           count разрядов.

Переносимость      _rotl уникальна для DOS.

Смотрите также      _lrotl _lrotr _rotr

Пример:

#include
#include

int main(void)
{
   unsigned value,result;
   value = 32767;
   result = _rotl(value,1);
   printf("Значение %u сдвинутое на один разряд влево = %u",
              value,result);
   return 0;


cpp

_setcursortype
Функция            Определяет вид курсора.

Синтаксис          #include
                   void _setcursortype(int cur_t);

Файл, содержащий   conio.h
прототип

Описание           Устанавливает вид курсора, в зависимости от зна-
                   чений:

                   _NOCURSOR       - выключает курсор
                   _SOLIDCURSOR    - курсор в виде блока
                   _NORMALCURSOR   - обычный курсор в виде подчерки-
                                     вания

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

Переносимость      Данная функция работает только на компьютерах сов-
                   местимых с IBM PC.

Пример:

#include

int main(void)
{
   /* вывести обычный курсор */
   cprintf("\r\nНормальный курсор:");
   getch();
   /* выключить курсор */
   setcursortype(_NOCURSOR);
   cprintf("\r\nНет курсора:");
   getch();
   /* курсор в виде блока */
   setcursortype(_SOLIDCURSOR);
   cprintf("\r\nКурсор в виде блока:");
   getch();
   /* вернуть обычный курсор */
   cprintf("\r\nНормальный курсор:");
   getch();
   return 0;


cpp

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

Синтаксис          #include
                   unsigned int _status87();

Файл, содержащий   float.h
прототип

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

Возвращаемое       Возвращаемое значение состоит из битов, отражающих
значение           состояние операций с плавающей точкой. Определение
                   данных битов вы найдете в float.h.

Переносимость      _status87 уникальна для DOS.

Смотрите также      _clear7, _control7, _fpreset

Пример:

#include
#include

int main(void)
{
   float x;
   double y=1.5e-100;
   printf("Состояние 8087 перед ошибкой: %X\n",_status87());
   x = y; /* создание состояния ошибки */
   printf("Состояние 8087 после ошибки: %X\n",_status87());
   return 0;


cpp

_stklen
Функция            Содержит размер стека.

Синтаксис          extern unsigned _stklen;

Объявлено в        dos.h

Описание           _stklen содержит размер стека для всех шести моде-
                   лей памяти. Минимально допустимый размер стека
                   равен 128 словам; если вы указываете меньшее зна-
                   чение, то _stklen автоматически расширяется до
                   минимума. Размер стека по умолчанию равен 4К.

                   В моделях small и medium размер сегмента данных
                   вычисляется следующим образом:

                         data segment [small,medium] = global data +
                                                       heap + stack

                   где размер heap может быть получен через
                   _heaplen.

                   В модели tiny все (включая код) находится в одном
                   сегменте, поэтому в сегмент данных включается код
                   и 256 байт для PSP.

                         data segment [tiny] = 256 + code + global data +
                                               heap + stack

                   В моделях compact и large не существует локально-
                   го heap, поэтому сегмент данных равен:

                         data segment [compact,large] = global data +
                                                        stack

                   В модели huge стек является отдельным сегментом,
                   а каждый модуль имеет собственный сегмент данных.

Смотрите также      _heaplen

Пример:

#include

/*  Установить больший размер стека, чем используется по умолчанию */
/*  Это обьявление должно находится в глобальной области определения */

extern unsigned _stklen = 54321U;

int main(void)
{
   /* показать текущий размер стека */
   printf("Размер стека: %u\n",_stklen);
   return 0;


cpp

_strerror
Функция            Определяет сообщение об ошибке.

Синтаксис          #include
                   char *strerror(const char *s);

Файл, содержащий   string.h, stdio
прототип

Описание           _strerror позволяет вам сгенерировать определен-
                   ное сообщение об ошибке. Она возвращает указатель
                   на оканчивающуюся нулем строку, содержащую сооб-
                   щение об ошибке.

                   - Если s равно NULL, то функция возвращает указа-
                     тель на строку, содержащую последнее, сгенери-
                     рованное сообщение об ошибке.

                   - Если s не равно нулю, то возвращаемая строка
                     содержит определенное вами сообщение, двоето-
                     чие, пробел, последнее сгенерированное системой
                     сообщение об ошибке и символ перехода на следу-
                     ющую строку. s не может быть длинее 94 симво-
                     лов.

                   _strerror аналогична strerror Turbo C версии 1.0.

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

Переносимость      _strerror уникальна для DOS.

Смотрите также      perror strerror

Пример:

#include

int main(void)
{
   FILE *fp;
   /* открыть файл для записи */
   fp = fopen("TEST.$$$","w");
   /* вызвать состояние ошибки */
   if(ferror(fp))
      /* вывести сообщение об ошибке */
      printf("%s",_strerror("Custom");
   fclose(fp);
   return 0;


cpp

_tolower
Функция            Преобразует символы в символы в нижнем регистре.

Синтаксис          #include
                   int _tolower(int ch);

Файл, содержащий   ctype.h
прототип

Описание           _tolower - это макрокоманда, производящая те же
                   преобразования, что и функция tolower, за
                   исключением того, что должно быть точно известно,
                   что ch - символ верхнего регистра (A-Z).

                   Для использования tolower необходимо включать
                   ctype.h.

Возвращаемое       _tolower возвращает преобразованное значение
значение           ch, если она в верхнем регистре, иначе результат
                   не определен.

Переносимость      _tolower поддерживается на системах UNIX.

Пример:

#include
#include
#include

int main(void)
{
   int length,i;
   char *string = "THIS IS A STRING.";
   /* Перед передачей символа _tolower мы должны убедиться,
      что этот символ в верхнем регистре. */
   length = strlen(string);
   for(i=0;i


cpp

_toupper
Функция            _toupper транслирует символы в верхний регистр.

Синтаксис          #include
                   int _toupper(int ch);

Файл, содержащий   ctype.h
прототип

Описание           _toupper - макрокоманда, выполняющая то же самое
                   преобразование, что и функция toupper, за исклю-
                   чением того, что ее можно применять только в том
                   случае, если ch - символ нижнего регистра.

                   Для использования _toupper вам следует подключить
                   файл ctype.h.

Возвращаемое       _toupper возвращает преобразованное значение
значение           ch, если она в нижнем регистре, иначе результат
                   не определен.

Переносимость      _touperr поддерживается на системах UNIX.

Пример:

#include
#include
#include

int main(void)
{
   int length,i;
   char *string = "this is a string.";
   /* Перед передачей символа _toupper мы должны убедиться,
      что этот символ в нижнем регистре. */
   length = strlen(string);
   for(i=0;i


cpp

_version
Функция            Содержит номер версии DOS.

Синтаксис          extern unsigned int _version;

Объявлено в        dos.h

Описание           _version содержит номер версии DOS. В младшем байте
                   хранится номер версии, в старшем байте - расшире-
                   ние номера версии. (Для версии DOS x.y, x являет-
                   ся номером версии, y - расширением номера вер-
                   сии).


cpp

_write
Функция            Записывает данные в файл.

Синтаксис          #include
                   int _write(int handle, void *buf, unsigned len);

Файл, содержащий   io.h
прототип

Описание           Данная функция делает попытку записи len байт
                   из буфера, адресуемого параметром buf, в файл,
                   соответствующий номеру handle.

                   Максимальное число байтов, которое _write может
                   записать 65534, т.к. 65535(0xFFFF) тоже самое,
                   что и -1, что является возвращаемым кодом ошибки
                   для _write.

                   _write не преобразует символ перевода строки
                   (LF),  в пару CR/LF, поскольку все файлы рассмат-
                   ривает как двоичные.

                   Если число действительно записанных байтов мень-
                   ше, чем задано, то должна быть выдана ошибка и
                   возможно это говорит, что на диске нет места.

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

                   Для файлов открытых опцией O_APPEND, файловый
                   указатель не устанавливается на EOF функцией
                   _write, прежде чем будет осуществлена запись дан-
                   ных.

Возвращаемое       _write возвращает число записанных байтов.В случае
значение           ошибки _write возвращает -1, и устанавливает гло-
                   бальную переменную errno в:

                     EACCED - Permission denied;
                     EBADR  - Bad file number.

Переносимость      _write уникальна для DOS.

Смотрите также      lseek _read write
Пример:

#include
#include
#include
#include
#include
#include

int main(void)
{
   void *buf;
   int handle, bytes;
   buf = malloc(200);
   /* Создать в текущей директории файл TEST.$$$ и записать в
      него 200 байт. Если такой файл уже существует, то он будет
      перезаписан */
   if((handle = open("TEST.$$$",O_CREAT|O_WRONLY|O_BINARY,
                     S_IWRITE|S_IREAD)) == -1)
   {
      printf("Ошибка при открытии файла\n");
      exit(1);
   }
   if((butes = _write(handle, buf, 200)) == -1)
   {
      printf("Ошибка при записи.\n");
      exit(1);
   }
   printf("Записано %d байт",bytes);
   close(handle);   /* прим. пер. в оригинале close отсутсвует */
   return 0;


cpp

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

Синтаксис          _extern int _wscroll

Объявлено в        conio.h

Описание           _wscroll это флаг прокрутки функций ввода/вывода
                   на консоль. По умолчанию он равен 1. Установка
                   флага в 0 запретит прокрутку. Это удобно при вы-
                   воде у краев экрана, когда прокрутка не нужна.


cpp

abort
 Функция            Ненормальное завершение выполнения программы.

 Синтаксис:         #include
                    void abort(void);

 Файл, содержащий   stdlib.h,process.h
 прототип

 Описание           Данная функция выводит сообщение о прекращении
                    работы ("Abnormal program termination") в stderr, и
                    прерывает   программу  посредством  вызова  функции
                    _exit с кодом завершения 3.

 Возвращаемое       Возвращает код завершения 3 в родительский процесс
 значение           или в DOS.

 Переносимость      Поддерживается в системах UNIX и определена в ANSI
                    C.

 Смотрите также     assert atexit exit _exit raise signal  spawn

 Пример:

 #include
 #include

 int main(void)
 {
    printf("Вызов функции abort()\n");
    abort();
    return 0; /* эта точка не достигается */


About Chm4You!

О программе Chm4You!
Разработчик: Сергей Тарасенко (aka Tarantul)
Версия: Chm4You! 1.2.1
Веб-сайт: http://supex.by.ru
Почта: tarantuls@ukr.net

Компилятор: hhc.exe 4.78.8702.0 (Microsoft)
Динамическая библиотека: hha.dll 4.78.8702.0 (Microsoft)
Декомпилятор: hh.exe 4.78.8702.0 (Microsoft)


cpp

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

 Синтаксис          Версия для вещественных      Версия для комплексных
                    #include             #include
                    int abs(int x);              double abs(complex x);

 Файл, содержащий   Версия для вещественных      Версия для комплексных
 прототип           math.h, stdlib.h             complex.h

 Описание           Функция abs возвращает абсолютное значение целого
                    аргумента  x. Если функция abs вызывается при под-
                    ключенном файле stdlib.h, abs будет восприниматься
                    как макрокоманда, которая расширяется до встроен-
                    ного кода.

                    Если  вы  используете  функцию abs вместо
                    макрокоманды, то включите  в  вашу   программу
                    #undef  abs  после
                    #include .

 Возвращаемое       Версия для вещественных чисел функции abs возвращает
 значение           целое значение в диапазоне от 0 до 32767, за исклю-
                    чением  того,  что аргумент -32768 будет возвращен,
                    как -32768. Комплексная версия abs возвращает  зна-
                    чение  типа double.

 Переносимость      Вещественная версия abs доступна в системе UNIX и
                    определена в ANSI C. Комплексная версия abs требует
                    С++ и, скорее всего, непереносима.

 Смотрите также     cabs complex fabs labs

 Пример:

 #include
 #include

 int main(void)
 {
     int number = -1234;

     printf("число: %d абсолютное значение: %d\n",number,abs(number));
     return 0;


cpp

absread
 Функция            Чтение абсолютных секторов на диске.

 Синтаксис          #include
                    int absread(int drive, int nsects,
                                int lsect, void * buffer);

 Файл, содержащий   dos.h
 прототип

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

                    аbsread читает заданные сектора диска посредст-
                    вом  прерывания DOS 0x25.

                    drive  = номер читаемого диска (0=А, 1=В, и т.д.)
                    nsects = количество читаемых секторов
                    lsect  =  начальный логический  номер сектора
                    buffer = адрес памяти, куда считываются данные.

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

 Возвращаемое       При успешном завершении absread  возвращает 0.
 значение           При возникновении ошибки, функция возвращает
                    значение -1 и присваивают переменной errno значе-
                    ние регистра AX, получаемое при системном вызове.

 Переносимость      absread уникальна для DOS.

 Смотри также       abswrite biosdisk

 Пример:

 #include
 #include
 #include
 #include
 #include

 #define SEGSIZE 512

 unsigned char buf[SEGSIZE];

 int main(void)
 {
    int i,j,sector,drive;
    char str[10];
    printf("Введите метку диска:");
    gets(str);
    drive = toupper(str[0])-'A';
    printf("Введите номер сектора, который нужно считать:");
    gets(str);
    sector = atoi(str);
    if(absread(drive,1,sector,&buf)!=0)
    {
       perror("Ошибка диска")ж
       exit(1);
    }
    printf("\nДисковод %c Сектор %d\n",'A'+drive,sector);
    for(i=0; i


cpp

abswrite
 Функция            Запись абсолютных секторов на диск.

 Синтаксис          #include
                    int abswrite(int drive, int nsects,
                                 int lsect, void * buffer);

 Файл, содержащий   dos.h
 прототип

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

                    Примечание. При неверном использовании abswrite
                    может перезаписать файлы, директории или блоки
                    FAT.

                    аbswrite произвадит запись секторов диска посредс-
                    твом прерывания DOS 0x26.

                    drive = номер диска, на который производится за-
                            пись (0=А, 1=В, и т.д.)
                    nsects = количество записываемых секторов
                    lsect = начальный логический номер сектора
                    buffer = адрес памяти, откуда ,берутся данные.

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

 Возвращаемое       При успешном завершении abswrite  возвращает 0.
 значение           При возникновении ошибки, функция возвращает
                    значение -1 и присваивает переменной errno значе-
                    ние регистра AX, получаемое при системном вызове.
                    Более детальную информацию об еrrno смотрите в
                    документации по DOS.

 Переносимость      abswrite уникальна для DOS.

 Смотрите также     absread biosdisk
EW1accessFW0

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

 Синтаксис          #include
                    int access(const char * filename, int amode);

 Файл, содержащий   io.h
 прототип

 Описание           access проверяет файл c именем filename для
                    определения, существует ли он, может ли он быть
                    прочитан, записан или выполнен.

                    Список значений параметра amode:
                    06   проверка разрешения на чтение и запись;
                    04   проверка разрешения на чтение;
                    02   проверка разрешения на запись;
                    01   проверка на выполнение (игнорируется);
                    00   проверка на существование файла;

                    Примечание. Под управлением операционной системы
                    DOS все существующие файлы имеют доступ на чтение
                    (amode равен 04), поэтому 00 и 04 дают один и тот
                    же результат. Аналогично, значения 06 и 02 эквивалентны,
                   так как в DOS доступ на запись подразумевает и доступ на
                   чтение.

                    Если параметр filename является ссылкой на дирек-
                    торию, функция access просто проверяет, существует
                    данная директория или нет.

 Возвращаемое       Если требуемый способ доступа разрешен, access
 значение           возвращает значение 0, иначе возвращается значение
                    -1 и переменная errno получает одно из следующих
                    значений:

                      ENOENT - Маршрут  или имя файла не найдены
                      EACCES - Отказ доступа.

 Переносимость      Поддерживается  на системах UNIX.

 Смотрите также     chmod fstat stat

 Пример:

 #include
 #include

 int file_exists(char * filename);

 int main(void)
 {
    printf("Существует ли файл NOTEXIST.FIL: %s\n",
       file_exists("NOTEXIST.FIL") ?  "Да":"Нет");
 }

 int file_exists(char * filename)
 {
    return (access(filename, 0) == 0);
 }

 Результат:
 Существует ли файл NOTEXIST.FIL: Нет


cpp

acos
 Функция            Вычисляет арккосинус.

 Синтаксис          Версия для вещественных    Версия для комплексных
                    #include           #include
                    double acos(double x);     complex acos(complex x);

 Файл, содержащий   Версия для вещественных      Версия для комплексных
 прототип           math.h                       complex.h

 Описание           acos возвращает арккосинус введенного значения. Ар-
                    гументы acos должны быть в диапазоне от  -1  до  1.
                    Иначе acos возвращает NAN и устанавливает errno в

                      EDOM - Ошибка области определения

                    Комплексный обратный косинус определяется следующим
                    образом:

                       acos(z)=-i*log(z+i*sqrt(1-z^2))

 Возвращаемое       Вещественная версия acos возвращает значение в диа-
 значение           пазоне от 0 до pi. Управление ошибками для этой фун-
                    кции можно изменить с помощью функции matherr.

 Переносимость      Вещественная версия acos поддерживается в системах
                    UNIX  и определена в ANSI C. Комплексная версия acos
                    требует С++ и, скорее всего, непереносима.

 Смотрите также     asinatanatan,complexcosmatherrsintan
 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x=0.5;
    result = acos(x);
    printf("Арккосинус от %1f равен %1f\n",x,result);
    return 0;


cpp

allocmem
 Функция            Выделяет сегмент памяти DOS.

 Синтаксис          #include
                    int allocmem(unsigned size, unsigned *segp);

 Файл, содержащий   dos.h
 прототип

 Описание           allocmem для выделения блока свободной
                    памяти использует системный вызов DOS 0x48 и возв-
                    ращает в качестве результата адрес сегмента выде-
                    ленного блока.

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

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

                    allocmem и malloc не могут использоваться вместе.

 Возвращаемое       allocmem при успешном завершении возвра-
 значение           щает значение -1. При возникновении ошибки
                    возвращается число (размер в параграфах наибольше-
                    го блока памяти, имеющегося в наличии).

                    Ошибка, возвращаемая из allocmem, устанавливает
                    _doserrno и глобальную переменную errno в

                      ENOMEM - Не хватает памяти

 Переносимость      allocmem уникальна для DOS.

 Смотрите также     coreleftfreememmallocsetblock

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    unsigned int size,segp;
    int stat;

    size = 64;   /* 64 * 16 = 1024 байта */
    stat = allocmem(size,&segp);
    if(stat == -1)
       printf("Выделен сегмент памяти по адресу %x\n",segp);
    else
       printf("Ошибка! Допустимый максимальный размер = %u\n",stat);
    return 0;


cpp

arc
 Функция            Рисует дугу окружности.

 Синтаксис          #include
                    void far arc(int x,int y,int stangle,
                                  int endangle,int radius);

 Файл, содержащий   graphics.h
 прототип

 Описание           arc рисует текущим  цветом дугу окружности с цент-
                    ром в точке  с координатами (x,y) и радиусом
                   radius . Дуга рисуется от угла stangle до угла
                   endangle. Если stangle равен 0 и endangle равен
                   360, функция arc нарисует полную окружность.

                    Угол для arc отсчитывается против часовой стрелки,
                    где 0 градусов соответствует 3 часам на цифербла-
                    те, 90 градусов - 12 часам и т.д.

                    Замечание. Параметр linestyle не оказывает воздей-
                    ствие при построении дуг, окружностей, эллипсов и
                    секторов. Используется только параметр thickness.

                    Замечание. Если вы используете CGA в режиме высо-
                    кого разрешения или монохромный графический адап-
                    тер, примеры на использование графических функций,
                    приведенные в этой книге, могут не дать ожидаемого
                    результата. Если ваша система работает на CGA или
                    монохромном адаптере, передайте значение 1 тем
                    функциям, которые изменяют цвет закрашивания или
                    рисования, (например, setcolor, setfillstyle и
                    setlinestyle) вместо символической константы цвета
                    (определенной в graphics.h).

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

 Переносимость      Эта функция уникальна для Turbo C++. Она работа-
                    ет только на компьютерах IBM PC и совместимых с
                    ними, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     circle ellipse fillelipse getarccoords
                    getaspectratio graphresult pieslice sector

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 int stangle = 45,endangle = 135;
 int radius = 100;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));

 /* рисует дугу */
 arc(midx,midy,stangle,endangle,radius);

 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

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

 Синтаксис          #include
                    double arg(complex x);

 Файл, содержащий   complex.h
 прототип

 Описание           arg возвращает в радианах угол  числа на комплекс-
                    ной плоскости.
                    Положительное направление вещественной оси имеет
                    угол 0, а положительное направление мнимой оси
                    имеет угол Pi. Если аргумент, передаваемый функ-
                    ции, равен комплексному 0 (ноль), то arg возвраща-
                    ет 0.

 Возвращаемое       arg(x) возвращает atan2(imag(x),real(x)).
 значение

 Переносимость      Функции комплексных чисел требуют С++ и поэтому не-
                    переносимы.

 Смотри также       complex norm polar

 Пример:

 #include
 #include

 int main(void)
 {
    double x = 3.1, y = 4.2;
    complex z = complex(x,y);
    cout << "z =" << z  << "\n";
    cout << "имеет вещественную часть = " << real(z) << "\n";
    cout << "и мнимую часть = " << imag(z) << "\n";
    cout << "z имеет комплексное сопряжение = " << conj(z) << "\n";

    double mag = sqrt(norm(z));
    double ang = arg(z);
    cout << "Полярная форма z:\n"
    cout << "Величина = " << mag << "\n";
    cout << "Угол (в радианах) = " << ang << "\n";
    cout << "Восстановление из полярной формы: \n";
    cout << "   z = " << polar(mag,ang) << "\n";
    return 0;


cpp

asctime
 Функция            Преобразует дату и время в код ASCII.

 Синтаксис          #include
                    char * asctime(const struct tm * tblock);

 Файл, содержащий   time.h
 прототип

 Описание           asctime преобразует время, содержащееся в виде
                    структуры в *tblock, в 26-символьную строку такой
                    же формы, как и в функции ctime:

                      Sun Sep 16 01:03:52 1973\n\0

 Возвращаемое       asctime возвращает указатель на символьную строку,
 значение           содержащую дату и время. Эта строка является стати-
                    ческой переменной, которая изменяет свое значение
                    при каждом вызове функции asctime.

 Переносимость      Поддерживается в системах UNIX и определена в
                    ANSI C.

 Смотрите также     ctime difftime ftime gmtime localtime mktime
                    strtime stime time tzset
 Пример:

 #include
 #include
 #include

 int main(void)
 {
      struct tm t;
      char str[80];

 /* простейшее заполнение структуры */
 t.tm_sec     = 1;  /* секунды */
 t.tm_min     = 30; /* минуты */
 t.tm_hour    = 9;  /* часы */
 t.tm_mday    = 22; /* день месяца */
 t.tm_mon     = 11; /* месяц */
 t.tm_year    = 56; /* год не включает век */
 t.tm_wday    = 4;  /* день недели */
 t.tm_yday    = 0;  /* не отображается в asctime */
 t.tm_isdst   = 0;  /* летнее время, не отобра-
                       жается asctime */
 /* преобразование структуры в строку оканчиваю-
    щуюся нулем */
 strcopy(str,asctime(&t));
 printf("%s\n",str);
 return 0;


cpp

asin
 Функция            Вычисляет арксинус.

 Синтаксис          Версия для вещественных    Версия для комплексных
                    #include           #include
                    double asin(double x);     complex asin(complex x);

 Файл, содержащий   Версия для вещественных    Версия для комплексных
 прототип           math.h                     complex.h

 Описание           Версия asin для вещественных чисел возвращает арк-
                    синус введенного значения. Аргументы функции asin
                    должны находиться в диапазоне от -1 до 1, в про-
                    тивном случае asin возвращает NAN и устанавливает
                    errno в

                      EDOM - Ошибка области определения.

                    Комплексный арксинус определяется следующим обра-
                    зом:

                      asin(z) = -i*log(i*z+sqrt(1-z^2))

 Возвращаемое       Вещественная версия asin возвращает значение в диа-
 значение           пазоне от -pi/2 до pi/2. Обработку ошибок для
                    этой  функции можно изменить с помощью функции
                    matherr.

 Переносимость      Поддерживается в системах UNIX и определена в ANSI
                    C. Комплексная версия asin требует С++ и скорее
                    всего непереносима.

 Смотрите также     acos atan atan, complex cos matherr sin tan

 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x = 0.5;
    result = asin(x);
    printf("Арксинус от %1f равен %1f\n",x,result);
    return 0;


cpp

assert
 Функция            Проверяет условия и возможность прерывания выполне-
                    ния программы.

 Синтаксис          #include
                    void assert(int test);

 Файл, содержащий   assert.h
 прототип

 Описание           Функция assert представляет собой макрокоманду,
                    которая расширяется до оператора if; если  параметр
                    test принимает нулевое значение, то assert прерыва-
                    ет  программу  (при  помощи вызова abort) и выводит
                    сообщение в stderr.

                    assert выводит следующее сообщение:

              Assertion failed: , file , line

                    Позиции filename и linenum, перечисленные в сообще-
                    нии, являются  именем  исходного  файла  и  номером
                    строки программы, в которой появляется макрокоманда
                    assert.

                    Если в исходный код  программы  вы  вставите  перед
                    оператором  #include    оператор  #define
                    NDEBUG ("без отладки"),  то  функция  assert  будет
                    воспринята как комментарий.

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

 Переносимость      Данная макрокоманда поддерживается на некоторых
                    системах UNIX, включая Systems III и V, совместима
                    с ANSI C.

 Смотрите также     abort

 Пример:

 #include
 #include
 #include

 struct ITEM {
     int   key;
     int   value;
 };

 /* Добавление элемента в список.
    Проверка, является ли элемент ненулевым */

 void additem(struct ITEM *itemptr)
 {
    assert(itemptr != NULL);
    /*... добавление элемента ... */
 }

 int main(void)
 {
    additem(NULL);
    return 0;
 }

 Результат
 Assertion failed: itemptr != NULL,
 file C:\TC\ASSERT.C, line 12


cpp

atan
 Функция            Вычисляет арктангенс.

 Синтаксис          Версия для вещественных    Версия для комплексных
                    #include           #include
                    double atan(double x);     complex atan(complex x);

 Файл, содержащий   Версия для вещественных    Версия для комплексных
 прототип           math.h                     complex.h

 Описание           atan возвращает арктангенс введенного значения.

                    Комплексный арктангенс определяется следующим обра-
                    зом:

                       atan(z) = -0.5*i*log((1+i*z)/(1-i*z))

 Возвращаемое       Вещественная версия atan возвращает значение в диа-
 значение           пазоне от -pi/2 до pi/2. Обработку ошибок для этой
                    функции можно изменить с помощью функции matherr.

 Переносимость      Вещественная версия atan поддерживается в системах
                    UNIX и определена в ANSI C. Комплексная версия
                    требует С++ и, скорее всего, непереносима.

 Смотрите также     acos asin atan, complex cos matherrsin tan:
 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x = 0.5;
    result = atan(x);
    printf("Арктангенс от %1f равен %1f\n",x,result);
    return 0;


cpp

atan2
 Функция            Вычисляет арктангенс от y/x.

 Синтаксис          #include
                    double atan2(double y, double x);

 Файл, содержащий   math.h
 прототип

 Описание           atan2 возвращает арктангенс от y/x и производит
                    корректировку результата, даже если  результирую-
                    щий угол близок к pi/2 или -pi/2 (x близок к 0).

                    Если и x и y установлены в 0, то функция устанавли-
                    вает errno в EDOM.

 Возвращаемое       atan2 возвращает значение в диапазоне от -pi до pi.
 значение           Обработку ошибок для этой функции можно изменить
                    с помощью функции matherr.

 Переносимость      Поддерживается в системах UNIX и определена в ANSI
                    C.

 Смотрите также     acos asin atan cos matherr sin tan

 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x = 90.0,y = 15.0;
    result = atan2(x,y);
    printf("Арктангенс от отношения %1f равен %1f\n",(x/y),result);
    return 0;


cpp

atexit
 Функция            Регистрирует функцию завершения работы.

 Синтаксис          #include
                    int atexit(atexit_t func)

 Файл, содержащий   stdlib.h
 прототип

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

                    Каждый вызов функции atexit регистрирует разные
                    функции выхода. Может быть зарегистрировано до 32
                    функций. Они выполняются в следующем порядке -
                    последняя регистрируемая выполняется первой.

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

 Переносимость      atexit совместима с ANSI C.

 Смотрите также     abort _exit exit spawn..

 Пример:

 #include
 #include

 void exit_fnl(void)
 {
    printf("Функция выхода 1\n");
 }
 void exit_fn2(void)
 {
    printf("Функция выхода 2\n");
 }

 int main(void)
 {
    /* послать функцию выхода */
    atexit(exit_fn1);
    /* послать функцию выхода */
    atexit(exit_fn2);
    printf("Завершение main ...\n");
    return 0;


cpp

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

 Синтаксис          #include
                    double atof(const char * s);

 Файл, содержащий   math.h, stdlib.h
 прототип

 Описание           Функция atof преобразует  символьную строку,
                    адресный указатель которой находится в аргументе
                    s, в число с двойной точностью (тип double); дан-
                    ная функция распознает символьное представление
                    числа с плавающей точкой следующего вида:

                    - необязательная строка табуляции и пробелов;
                    - необязательный знак;
                    - строку цифр и необязательную десятичную точку
                      (цифры могут находиться с обеих сторон от точки)
                    - необязательные символы e или E, за которыми сле-
                      дует необязательное целое со знаком

                    Символы должны соответствовать следующему формату:

                      [пробелы] [знак] [ddd] [.] [ddd] [e|E[знак]ddd]

                    atof также распознает +INF и -INF для плюс и  минус
                    бесконечности, +NAN и -NAN для нечисловых значений.

                    Эта функция прекращает преобразование на первом не-
                    распознаваемом символе.

                    strtod  аналогична atof; она дает лучшее распознава-
                    ние ошибок, и поэтому в некоторых случаях предпочти-
                    тельнее.

 Возвращаемое       atof возвращает преобразованное значение
 значение           входной символьной строки.

                    В случае переполнения atof возвращает положитель-
                    ное или отрицательное значение HUGE_VAL, глобаль-
                    ная переменная errno устанавливается в ERANGE и
                    функция matherr не вызывается.

 Переносимость      Поддерживается в системах UNIX и определена в ANSI
                    C.

 Смотрите также     atoi atol ecvt fcvt gcvt scanf strtod

 Пример:

 #include
 #include

 int main(void)
 {
    float f;
    char *str = "12345.678";
    f = atof(str);
    printf("строка = %s значение = %5.3f\n",str,f);
    return 0;


cpp

atoi
 Функция            Преобразует строку в целое число.

 Синтаксис          #include
                    int atoi(const char *s);

 Файл, содержащий   stdlib.h
 прототип

 Описание           Функция atoi преобразует  символьную строку,
                    адресный указатель которой находится в аргументе
                    s, в число типа int; данная функция распознает (в
                    следующем порядке):

                    - необязательную строку табуляции и пробелов;
                    - необязательный знак;
                    - строку цифр.

                    Символы должны соответствовать следующему формату:

                      [пробелы] [знак] [ddd]

                    Эта функция прекращает преобразование на первом не-
                    распознаваемом символе.

                    atoi не отслеживает переполнение.

 Возвращаемое       atoi возвращает преобразованное значение
 значение           входной символьной строки. Если строка не может
                    быть преобразована в число соответствующего типа
                    (int), то возвращаемое значение равно 0.

 Переносимость      Поддерживается в системах UNIX и определена в ANSI
                    C.

 Смотрите также     atof atol ecvt fcvt gcvt scanf strtod

 Пример:

 #include
 #include

 int main(void)
 {
    int n;
    char *str = "12345";
    n = atoi(str);
    printf("строка = %s целое = %d\n",str,n);
    return 0;


cpp

atol
 Функция            Преобразует строку в число типа long.

 Синтаксис          #include
                    long atol(const char * s);

 Файл, содержащий   stdlib.h
 прототип

 Описание           Функция atol преобразует  символьную строку,
                    адресный указатель которой находится в аргументе
                    s, в число типа long. Данная функция распознает в
                    следующем порядке:

                    - необязательную строку табуляции и пробелов;
                    - необязательный знак;
                    - строку цифр.

                    Символы должны соответствовать следующему формату:

                      [пробелы] [знак] [ddd]

                    Эта функция прекращает преобразование на первом не-
                    распознаваемом символе.

                    atol не отслеживает переполнение (результат не опре-
                    делен).

 Возвращаемое       atol возвращает преобразованное значение
 значение           входной символьной строки. Если строка не может
                    быть преобразована в число соответствующего типа
                    (long), то возвращаемое значение равно 0.

 Переносимость      Поддерживается в системах UNIX и определена ANSI
                    C.

 Смотрите также     atof atoi ecvt fcvt gcvt scanf strtod strtol
                    strtoul

 Пример:

 #include
 #include

 int main(void)
 {
    int n;
    char *str = "12345";
    n = atoi(str);
    printf("строка = %s целое = %d\n",str,n);
    return 0;


cpp

bar
 Функция            Рисует прямоугольник.

 Синтаксис          #include
                    #include
                    void far bar(int left,int top,int right,int
                                 bottom);

 Файл, содержащий   graphics.h
 прототип           include

 Описание           bar рисует двухмерный заполненный прямоугольник.
                    Прямоугольник зарисовывается, используя текущий
                    цвет и шаблон заполнения. bar не рисует контур
                    прямоугольника; для того, чтобы нарисовать контур
                    двухмерного прямоугольника, используйте функцию
                    bar3d, с параметром depth равным 0.

                    Верхний левый и нижний правый углы прямоугольника
                    заданы параметрами (left,top) и (right,bottom)
                    соответствено. Координаты даются в пикселях.

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

 Переносимость      Функция уникальна для Turbo C++. Эта функция рабо-
                    тает  только  на компьютерах IBM PC и совместимых с
                    ними, оснащенных дисплейными адаптерами,  поддержи-
                    вающими графический режим.

 Смотрите также     bard rectangle setcolor setfillstyle
                    setlinestyle

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy,i;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;

 /* цикл по шаблонам заполнения */
 for(i=SOLID_FILL; i


cpp

bar3d
 Функция            Рисует трехмерный столбец.

 Синтаксис          #include
                    void far bar3d(int  left,  int  top,
                                     int right, int bottom,
                                      int depth, int topflag);
 Файл, содержащий   graphics.h
 прототип

 Описание           bar3d рисует трехмерный прямоугольный столбец,
                    затем закрашивает его, используя текущий шаблон и
                    цвет заполнения. Трехмерный контур столбца рису-
                    ется текущим цветом и типом линии. Глубина столб-
                    ца в точках экрана задается параметром depth. Па-
                    раметр topflag определяет, будет ли рисоваться
                    вершина трехмерного столбца. Если topflag не 0,
                    вершина рисуется, в противном случае вершина не
                    рисуется. (создается возможность ставить несколь-
                    ко столбцов друг на друга.)

                    Верхний левый и нижний правый угол прямоугольника
                    задаются (left, top) и (right,bottom) соответст-
                    венно.

                    Для вычисления типичной глубины для bar3d возьми-
                    те 25% ширины столбца, например:

                    bar3d(left,top,right,bottom,(right-left)/4,1)

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

 Переносимость      Функция уникальна для Turbo C++. Эта функция рабо-
                    тает  только  на компьютерах IBM PC и совместимых с
                    ними, оснащенных дисплейными адаптерами,  поддержи-
                    вающими графический режим.

 Смотрите также     bar rectangle setcolor setfillstyle
                    setlinestyle

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy,i;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;

 /* цикл по шаблонам заполнения */
 for(i=SOLID_FILL; i


cpp

bcd
 Функция            Преобразует число в двоично-десятичный код.

 Синтаксис          #include
                    bcd bcd(int x);
                    bcd bcd(double x);
                    bcd bcd(double x, int decimals);

 Файл, содержащий   bcd.h
 прототип

 Описание           Все обычные арифметические операции переопределены
                    для работы с числами в двоично-десятичном кодиро-
                    вании (BCD). BCD числа имеют около 17 десятичных
                    разрядов и имеют диапазон представления от
                    1х10^-125 до 1x10^125. Для преобразования числа в
                    BCD кодировании обратно в float, double или long
                    double можно воспользоваться функцией real. Аргу-
                    мент desimals необязателен. Он определяет сколько
                    необходимо сохранить разрядов после десятичной
                    точки при преобразовании. Число округляется в со-
                    ответствии с правилами округления банкомета, по
                    которым число округляется до ближайшего целого
                    числа, а остаток округляется до четной цифры.

 Возвращаемое       Двоично-десятичный эквивалент данного числа.
 значение

 Переносимость      bcd уникальна для Turbo C++; вы должны компилиро-
                    вать с помощью С++.

 Смотри также       real

 Пример:

 #include
 #include

 double x = 1000.0;  // десять тысяч долларов
 bcd  a  = bcd(x/3,2); // одна треть, округленная до
                       // одной сотой
 int main(void)
 {
    cout << "пай = $" << a << "\n";
    return 0;


cpp

bdos
 Функция            Доступ к системным вызовам DOS.

 Синтаксис          #include
                    int bdos(int dosfun, unsigned dosdx,
                                              unsigned dosal);

 Файл, содержащий   dos.h
 прототип

 Описание           bdos обеспечивает прямой доступ ко многим систем-
                    ным вызовам DOS. Описание всех системных вызовов
                    вы найдете в документе "Справочное руководство по
                    DOS".

                    В системных вызовах, требующих целый аргумент,
                    используйте функцию bdos; если в качестве аргу-
                    мента они требуют указатель, то используйте функ-
                    цию bdosptr.

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

                    dosfun  описан  в документе "Справочное руководство
                    по DOS".

                    dosdx является значением регистра DX.

                    dosal является значением регистра AL.

 Возвращаемое       Функция bdos возвращает значение регистра AX,
 значение           устанавливаемое при системном вызове.

 Переносимость      bdos уникальна для DOS.

 Смотрите также     bdosptr geninterrupt int6, int6x intdos
                    intdosx

 Пример:

 #include
 #include

 /* получение текущего устройства, как 'A','B',...*/
 char current_drive(void)
 {
   char curdrive;
   /* получение текущего диска, как 0,1,...*/
   curdrive = bdos(0x19,0,0);
   return('A' + curdrive);
 }

 main()
 {
    printf("Текущий дисковод %c:\n",
                                  current_drive());
 }

 Результат
 Текущий дисковод C:


cpp

bdosptr
 Функция            Доступ к системным вызовам DOS.

 Синтаксис          #include
                    int bdosptr(int dosfun, void * argument,
                                    unsigned dosal);

 Файл, содержащий   dos.h
 прототип

 Описание           bdosptr обеспечивает прямой доступ ко многим сис-
                    темным вызовам DOS. Описание всех системных вызо-
                    вов вы найдете в документе "Справочное руководст-
                    во по DOS".

                    В системных вызовах, требующих целый аргумент,
                    используйте функцию bdos; если в качестве аргу-
                    мента они требуют указатель, то используйте функ-
                    цию bdosptr.

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

                    dosfun описан в документе  "Справочное  руководство
                    по DOS".

                    В моделях данных типа small параметр argument в
                    bdosptr задает DX; в моделях данных типа large он
                    задает значение DS:DX, используемое в системном
                    вызове.

                    dosal является значением регистра AL.

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

 Переносимость      bdosptr уникальна для DOS.

 Смотрите также     bdos geninterrupt int6, int6x intdos intdosx

 Пример:

 #include
 #include
 #include
 #include
 #include
 #include

 #define BUFLEN 80

 int main(void)
 {
    char buffer[BUFLEN];
    int test;
    printf("Введите полный маршрут директории:");
    gets(buffer);
    test = bdosptr(0x3b,buffer,0);
    if(test)
    {
       /* в errno.h приведен список кодов ошибок */
       printf("Ошибка DOS, номер: %d\n",errno);
       exit(1);
    }
    getcwd(buffer,BUFLEN);
    printf("Текущая директория: %s\n",buffer);
    return 0;


cpp

bioscom
 Функция            Выполняет ввод/вывод из последовательного порта.

 Синтаксис          #include
                    int bioscom(int cmd, char abyte, int port);

 Файл, содержащий   bios.h
 прототип

 Описание           Функция bioscom выполняет разнообразную связь через
                    RS232 при помощи порта ввода/вывода, указываемого
                    в аргументе port.

                    Значение 0 аргумента port соответствует COM1,
                    значение 1 соответствует COM2 и т.д.

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

                    0 - устанавливает параметры связи в abyte;
                    1 - пересылает символ в abyte по линии связи;
                    2 - получает символ по линии связи;
                    3 - возвращает текущее состояние коммуникационного
                        порта.

                    abyte является комбинацией следующих битов (из
                    каждой группы выбирается одно значение):

                    0x02 - 7 битов данных            0x00    110 бод
                    0x03 - 8 битов данных            0x20    150 бод

                    0x00 - 1 стоп-бит                0x40    300 бод
                    0x04 - 2 стоп-бита               0x60    600 бод
                    0x00 - нет проверки на четность  0x80    1200 бод
                    0x08 - проверка на нечетность    0xA0    2400 бод
                    0x18 - проверка на четность      0xC0    4800 бод
                                                     0xE0    9600 бод

                    Например, если abyte имеет следующее значение
                    0xEB (0xE0|0x08|0x00|0x03), то это устанавливает
                    для коммуникационного порта скорость передачи
                    9600 бод, контроль на нечетность, 1 стоп-бит, и 8
                    битов данных. bioscom использует прерывание BIOS
                    0x14.

 Возвращаемое       Для всех значений cmd bioscom возвращает шестнадца-
 значение           тибитовое целое число, где 8 старших бит - это биты
                    состояния, а 8 младших битов варьируются в зави-
                    симости от значения cmd. Старшие биты в возвраща-
                    емом значении имеют следующие значения:

                    бит 15 - таймаут;
                    бит 14 - передающий сдвиговый регистр пуст:
                    бит 13 - передающий регистр хранения пуст;
                    бит 12 - обнаружено прерывание;
                    бит 11 - ошибка формирования кадра синхронизации;
                    бит 10 - ошибка четности;
                    бит 9  - ошибка переполнения;
                    бит 8  - готовность данных.

                    Если значение в abyte невозможно передать, то ус-
                    танавливается бит 15. В других случаях старшие и
                    младшие биты устанавливаются соответствующим об-
                    разом. К примеру, если возникла ошибка кадра син-
                    хронизации, то устанавливается бит 11.

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

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

                    бит 7 - прием обнаруженного линейного сигнала;
                    бит 6 - кольцевой индикатор;
                    бит 5 - набор данных готов;
                    бит 4 - готовность к передаче;
                    бит 3 - изменение в приеме детектора линейного
                            сигнала;
                    бит 2 - завершающий кольцевой детектор;
                    бит 1 - изменение в готовности набора данных;
                    бит 0 - изменение в готовности к передаче.

 Переносимость      bioscom поддерживается только на компьютерах
                    IBM PC или совместимых с ними.

 Пример:

 #include
 #include

 #define COM1 0
 #define DATA_READY 0x100
 #define SETTINGS (0x80|0x02|0x00|0x00)

 int main(void)
 {
     register int in, out, status;
     bioscom(0, SETTINGS, COM1);
     cprintf("... BIOSCOM [ESC] to exit ...\n");
     while (1)
     {
        status = bioscom(3, 0, COM1);
        if (status & DATA_READY)
           if ((out=bioscom(2, 0, COM1) & 0x7F) != 0)
                putch(out);
            if (kbhit())
            {
               if ( (in = getch()) == '\x1B')
                   return(0);
               bioscom(1, in, COM1);
            }
       }
 return 0;


cpp

biosdisk
 Функция            Дисковые функции BIOS.

 Синтаксис          #include
                    int biosdisk(int cmd, int drive, int head,
                     int track, int sector, int nsects, void * buffer);

 Файл, содержащий   bios.h
 прототип

 Описание           biosdisk использует  прерывание 0x13 для того,чтобы
                    передать выполнение дисковых операций непосредст-
                    венно системе BIOS.

                    drive представляет собой число, которое задает
                    используемый дисковод: 0 для 1-го устройства гиб-
                    ких дисков, 1 для 2-го устройства гибких дисков,
                    3 для 3-го устройства и т.д. Для жестких дисковых
                    устройств значение drive 0x80 задает первый дис-
                    ковод, значение 0x81 - второй дисковод, значение
                    0x82 - третий и т.д.

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

                    cmd обозначает выполняемую операцию. В зависимос-
                    ти от значения cmd остальные аргументы могут тре-
                    боваться или нет.

                    Далее перечислены возможные значения cmd для
                    компьютеров IBM PC, XT, AT, PS/2 или совместимых
                    с ними.

                    0   Аппаратный сброс дискового контроллера. Все
                        остальные параметры игнорируются.
                    1   Возвращает статус последней дисковой операции.
                        Все остальные параметры игнорируются.
                    2   Считывает в память один или несколько секторов
                        диска. Начальный сектор, подлежащий считыванию,
                        задается аргументами head, track и sector. Чис-
                        ло  считываемых  секторов  задается  аргументом
                        nsects. Данные считываются в buffer по 512 бай-
                        тов на сектор.
                    3   Записывает на диск из памяти один  или  более
                        дисковых секторов. Начальный сектор задается
                        аргументами head, track и sector. Число сек-
                        торов определяется аргументом nsects. Данные
                        записываются на диск из buffer по 512 байт на
                        сектор.
                    4   Производит верификацию одного или более секто-
                        ров. Начальный сектор определяется  аргументами
                        head, track и sector. Количество секторов зада-
                        ется в nsects.
                    5   Форматирует дорожку. Дорожка определяется
                        аргументами head и track. buffer является ад-
                        ресным указателем таблицы дескрипторов секто-
                        ров, которые будут записываться на указанной
                        дорожке. Обратитесь к документу "Техническое
                        справочное руководство по IBM PC", в котором
                        подробно описана данная таблица и операция
                        форматирования.

                    Только для компьютеров типа XT, AT, PS/2 и сов-
                    местимых с ними разрешены следующие значения ар-
                    гумента cmd:

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

                    Примечание. biosdisk работает ниже файловой сис-
                    темы - на произвольных секторах, поэтому может
                    разрушить содержимое файлов и директорий на жест-
                    ком диске.

 Возвращаемое       biosdisk возвращает байт состояния, состоя-
 значение           щий из следующих битов:

                    0x00   успешная операция.
                    0x01   неверная команда.
                    0x02   адресный маркер не найден.
                    0x03   попытка записи на диск, защищенный от записи.
                    0x04   сектор не найден.
                    0x05   неудачный сброс (для жесткого диска).
                    0x06   диск изменился после последней операции.
                    0x07   сбой параметра активности дисковода.
                    0x08   конфликт при работе DMA.
                    0x09   попытка обращения к DMA за границей 64К.
                    0x0A   обнаружен дефектный сектор.
                    0x0B   обнаружена дефектная дорожка.
                    0x0C   неподдерживаемая дорожка.
                    0x10   ошибка CRC/ECC при чтении диска.
                    0x11   ошибка CRC/ECC при корректировке данных.
                    0x20   сбой при работе контроллера.
                    0x40   сбой при операции поиска.
                    0x80   узел подсоединения не отвечает.
                    0xAA   устройство не готово (только для жесткого
                           диска).
                    0xBB   произошла нераспознаваемая ошибка (только
                           для жесткого диска).
                    0xCC   произошел сбой при записи.
                    0xE0   ошибка статуса.
                    0xFF   сбой операции распознавания.

                    Заметим, что код 0x11 не является ошибкой, посколь-
                    ку данные являются корректными. Возвращаемое значе-
                    ние выдается в любом случае, чтобы дать возможность
                    прикладной программе выработать решение.

 Переносимость      Данная функция поддерживается только на компью-
                    терах IBM PC и совместимых с ними.

 Смотрите также     absread abswrite

 Пример:

 #include
 #include
 int main(void)
 {
    #define CMD     2 /* команда чтения сектора */
    #define DRIVE   0 /* номер дисковода для A: */
    #define HEAD    0 /* номер головки */
    #define TRACK   1 /* номер дорожки */
    #define SECT    1 /* номер секторов */
    #define NSECT   1 /* число секторов */

    int result;
    char buffer[512];
    printf("Попытка чтения дисковода A:\n");
    result = biosdisk(CMD,DRIVE,HEAD,TRACK,SECT,NSECT,buffer);
    if(result==0)
       printf("Успешное чтение диска в дисководе A:");
    else
       printf("Попытка чтения дисковода A: неудача\n");
    return 0;


cpp

biosequip
 Функция            Проверяет оборудование.

 Синтаксис          #include
                    int biosequip(void);

 Файл, содержащий   bios.h
 прототип

 Описание           biosequip возвращает целое число, описывающее
                    оборудование, подсоединенное к системе. Для этой
                    цели используется прерывание 0x11 BIOS.

 Возвращаемое       Возвращаемое функцией значение представ-
 значение           ляет собой набор битовых полей. Для компьютера
                    IBM PC этот набор следующий:

                    биты 14-15  Количество установленных параллельных
                                принтеров
                                00 = 0 принтеров
                                01 = 1 принтер
                                10 = 2 принтера
                                11 = 3 принтера
                    бит 13      Подсоединение последовательного принтера.
                    бит 12      Подсоединение игрового контроллера.
                    биты 9-11   Количество портов передачи данных.
                                000 = 0 портов
                                001 = 1 порт
                                010 = 2 порта
                                011 = 3 порта
                                100 = 4 порта
                                101 = 5 портов
                                110 = 6 портов
                                111 = 7 портов
                    бит 8       DMA (прямой доступ к памяти)
                                0=Компьютер имеет DMA.
                                1=Компьютер не имеет DMA; например, PCJr.
                    биты 6-7    Количество дисков
                                00=1 дисковод
                                01=2 дисковода
                                10=3 дисковода
                                11=4 дисковода (только, если бит 0 = 1)
                    бит 4-5     Исходный видео-режим
                                00 = не используется
                                01 = 40х25 BW с цветной платой
                                10 = 80х25 BW с цветной платой
                                11 = 80х25 BW с монохромной платой
                    биты 2-3    Размер RAM в компьютере
                                00 = 16К
                                01 = 32К
                                10 = 48К
                                11 = 64К
                    бит 1       сопроцессор с плавающей точкой
                    бит 0       загрузка с диска

 Переносимость      biosequip поддерживается только на компьютерах
                    IBM PC или совместимых с ними.

 Пример:

 #include
 #include

 #define CO_PROCESSOR_MASK 0x0002

 int main(void)
 {
    int equip_check;
    /* получить текущую конфигурацию оборудования */
    equip_check = biosequip();
    /* имеется ли сопроцессор? */
    if(equip_check & CO_PROCESSOR_MASK)
       printf("Сопроцессор установлен\n");
    else
       printf("Сопроцессор не установлен\n");
    return 0;


cpp

bioskey
 Функция            Интерфейс с клавиатурой при помощи функций BIOS.

 Синтаксис          #include
                    int bioskey(int cmd);

 Файл, содержащий   bios.h
 прототип

 Описание           bioskey посредством прерывания BIOS 0x16 выполняет
                    различные операции c клавиатурой. Параметр cmd
                    определяет операцию.

 Возвращаемое       Значение, возвращаемое функцией bioskey, зависит от
 значение           выполняемой операции, которая определяется аргумен-
                    том cmd:

                    --------------------------------------------------
                    cmd    Операция
                    --------------------------------------------------
                    0      Если младшие 8 бит не нулевые, bioskey
                           возвращает код ASCII следующей нажатой кла-
                           виши,  ожидающей  в  очереди. Если младшие 8
                           битов равны 0, то старшие 8  битов  содержат
                           расширенные  коды клавиатуры, описание кото-
                           рых вы можете найти в документе "Техническое
                           справочное руководство по IBM PC".

                    1      Производится проверка, имело ли место нажа-
                           тие клавиши. Если при проверке возвращает-
                           ся значение 0, это означает, что клавиша
                           не была нажата. В противном случае возвра-
                           щается значение очередной нажатой клавиши.
                           Сам же код очередной нажатой клавиши сох-
                           раняется и будет возвращен при следующем
                           вызове функции bioskey при значении пара-
                           метра cmd, равном нулю.

                    2      Запрашивает  текущий  статус клавиш типа
                           SHIFT. Значение получается при логическом
                           сложении следующих кодов (операции "ИЛИ")
                           Бит 7  0x80     INSERT  нажат
                           Бит 6  0x40     CAPS нажат
                           Бит 5  0x20     NUM LOCK нажат
                           Бит 4  0x10     SCROLL LOCK нажат
                           Бит 3  0x08     ALT  нажат
                           Бит 2  0x04     CTRL  нажат
                           Бит 1  0x02     LEFT SHIFT нажат
                           Бит 0  0x01     RIGHT SHIFT нажат

 Переносимость      bioskey поддерживается только на компьютерах IBM PC
                    или совместимых с ними.

 Пример:

 #include
 #include
 #include

 #define RIGHT 0x0001
 #define LEFT  0x0002
 #define CTRL  0x0004
 #define ALT   0x0008

 int main(void)
 {
   int key, modifiers;

   /* Функция 1 возвращает 0, пока не будет
   нажата клавиша. Ожидание  ввода. */;                                                                           /* now use function 0 to get return value of
   while (bioskey(1) == 0);

   /* Теперь используем функцию 0, чтобы получить
   значение клавиши  */
   key = bioskey(0);

   /* Используем функцию 2, чтобы определить,
   используются ли клавиши типа SHIFT */.
   modifiers = bioskey(2);
   if (modifiers) {
      printf("[");
      if (modifiers & RIGHT) printf("RIGHT ");
      if (modifiers & LEFT ) printf("LEFT ");
      if (modifiers & CTRL ) printf("CTRL ");
      if (modifiers & ALT  ) printf("ALT ");
      printf("] ");
 }
 /* вывести символ нажатой клавишу */
 if (isalnum(key & 0xFF))
    printf("'%c'\n",key);
 else
    printf("%#02x\n",key);
 }

 Результат
 Key Pressed was: [LEFT] 'T'


cpp

biosmemory
 Функция            Возвращает размер оперативной памяти.

 Синтаксис          #include
                    int biosmemory(void);

 Файл,содержащий    bios.h
 прототип

 Описание           biosmemory при помощи прерывания BIOS 0x12
                    получает значение, равное размеру оперативной па-
                    мяти. Это значение не включает видео-память, рас-
                    ширенную память или дополнительную память.

 Возвращаемое       biosmemory  возвращает размер оперативной памяти
 значение           в блоках по 1К.

 Переносимость      biosmemory поддерживается только на компьютерах
                    IBM PC или совместимых с ними.

 Пример:

 #include
 #include
 int main(void)
 {
    int memory_size;
    memory_size = biosmemory(); /* возвращает до
                                      640К */
    printf("Оперативная память: %dK\n",memory_size);
    return 0;


cpp

biosprint
 Функция            Ввод/вывод на принтер при помощи BIOS.

 Синтаксис          #include

 Файл, содержащий   bios.h
 прототип

 Описание           biosprint выполняет различные операции  с
                    принтером, определяемым аргументом port, при по-
                    мощи прерывания BIOS 0x17,

                    Значение аргумента port = 0 соответствует LPT1;
                    port = 1 соответствует LPT2 и т.д..

                    Значение аргумента cmd может быть одним из следу-
                    ющих: 0 печать символа, содержащегося в abyte 1
                    инициализация порта принтера 2 считывание статуса
                    принтера Значение аргумента abyte может быть пре-
                    делах от 0 до 255.

 Возвращаемое       Значение, возвращаемое функцией biosprint в любой
 значение           из описанных выше операций, представляет собой
                    статус принтера, получаемый посредством операции
                    "ИЛИ" со следующими битовыми значениями:
                    Бит 0 0x01 Таймаут устройства;
                    Бит 3 0x08 Ошибка ввода/вывода
                    Бит 4 0x10 Включено;
                    Бит 5 0x20 Конец бумаги;
                    Бит 6 0x40 Подтверждение приема;
                    Бит 7 0x80 Не занято.

 Переносимость      biosprint поддерживается только на компьютерах
                    IBM PC или совместимых с ними.

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    #define STATUS  2 /* команда получить статус принтера */
    #define PORTNUM 0 /* LPT1 */

    int status,abyte = 0;

    printf("Пожалуйста, выключите принтер. Для продолжения нажмите
               любую клавишу\n");
    getch();
    status = biosprint(STATUS,abute,PORTNUM);
    if(status & 0x01)
      printf("Таймаут устройства\n");
    if(status & 0x08)
      printf("Ошибка ввода/вывода\n");
    if(status & 0x10)
      printf("Включено\n");
    if(status & 0x20)
      printf("Конец бумаги\n");
    if(status & 0x40)
      printf("Подтверждение приема\n");
    if(status & 0x80)
      printf("Не занято\n");
    return 0;


cpp

biostime
 Функция            Считывание или установка таймера BIOS.

 Синтаксис          #include
                    long biostime(int cmd, long newtime);

 Файл, содержащий   bios.h
 прототип

 Описание           biostime либо считывает, либо устанавливает
                    таймер BIOS. Этот таймер считывает время, прошед-
                    шее с полуночи, в тиках (приблизительно в 18.2
                    тика в секунду). biostime использует прерывание
                    BIOS 0x1A.

                    Если аргумент cmd = 0, biostime возвращает теку-
                    щее значение таймера. При cmd = 1 значение тайме-
                    ра устанавливается в аргументе newtime с типом
                    long.

 Возвращаемое       Когда функция biostime работает в режиме чтения
 значение           таймера BIOS (cmd = 0), то возвращаемое значение
                    представляет собой текущее значение таймера.

 Переносимость      biostime поддерживается только на компьютерах
                    IBM PC или совместимых с ними.

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    long bios_time;
    clrscr();
    cprintf("Число тиков, с полуночи:\r\n");
    cprintf("Число секунд, с полуночи:\r\n");
    cprintf("Число минут, с полуночи:\r\n");
    cprintf("Число часов, с полуночи:\r\n");
    cprintf("\r\nДля выхода нажмите любую клавишу");
    while(!kbhit())
    {
       bios_time = biostime(0L);
       gotoxy(50,1);
       cprintf("%lu",bios_time);
       gotoxy(50,2);
       cprintf("%lu",bios_time/CLK_TCK);
       gotoxy(50,3);
       cprintf("%lu",bios_time/CLK_TCK/60);
       gotoxy(50,4);
       cprintf("%lu",bios_time/CLK_TCK/3600);
    }
    return(0);


cpp

brk
 Функция            Изменяет размещение в памяти сегмента данных.

 Синтаксис          #include
                    int brk(void * addr);

 Файл, содержащий   alloc.h
 прототип

 Описание           Функция brk используется для динамического измене-
                    ния количества памяти, распределенного для сег-
                    мента данных вызываемой программы. Данное измене-
                    ние производится посредством сброса программного
                    "значения прерывания", которое является первым
                    адресом после конца сегмента данных. Таким обра-
                    зом, количество отведенной памяти будет увеличе-
                    но, если будет увеличено "значение прерывания".

                    brk  устанавливает "значение прерывания" соответст-
                    венно параметру addr и аналогично меняет количество
                    памяти.

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

 Возвращаемое       При успешном завершении функция brk возвращает зна-
 значение           чение, равное 0.
                    При ошибке возвращается значение -1 и глобальной
                    переменной errno присваивается значение:

                      ENOMEM - Не хватает памяти.

 Переносимость      brk поддерживается на системах UNIX.

 Смотрите также     coreleft sbrk

 Пример:

 #include
 #include
 int main(void)
 {
    char *ptr;
    printf("Изменение объема выделенной памяти с помощью brk");
    ptr = malloc(1);
    printf("Перед вызовом brk() свободно %lu байт\n",coreleft());
    brk(ptr+1000);
    printf("После вызова brk() свободно %lu байт\n",coreleft());
    return 0;
 }
pro1

brk
Функция            Изменяет размещение сегмента данных в памяти.

Синтаксис          #include
                   char *sbrk(int incr);

Файл, содержащий   alloc.h
прототип

Описание           Функция sbrk добавляет к завершающему значению
                   incr байт, и соответственно выделяет память. incr
                   может быть и отрицательным, в этом случае объем
                   выделенной памяти уменьшается.

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

Возвращаемое       При успешном завершении sbrk возвращает старое
значение           значение. При ошибке, sbrk возвращает -1 и гло-
                   бальной переменной errno присваивает значение:

                   ENOMEM - Недостаточно памяти.

Переносимость      sbrk доступна в системах UNIX.

Смотрите также      brk

Пример:

#include
#include

int main(void)
{
   printf("Изменение выделенного объема памяти с помощью sbrk\n");
   printf("Перед вызовом sbrk свободны %lu байт.\n",
          (unsigned long)coreleft());
   sbrk(1000);
   printf("После вызова sbrk свободны %lu байт.\n",
          (unsigned long)coreleft());
   return 0;


cpp

bsearch
 Функция            Двоичный поиск в массиве.

 Синтаксис          #include
                    void * bsearch(const void * key, const void * base,
                           size_t  nelem, size_t width,
                           int (*fcmp) (const void *, const void *));

 Файл, содержащий   stdlib.h
 прототип

 Описание           bsearch осуществляет поиск по таблице (массиву) из
                    элементов nelem и возвращает адрес первого элемента
                    в таблице, который  соответствует  шаблону  поиска.
                    Если соответствие не найдено, то bsearch возвращает
                    значение, равное 0.

                    Тип size_t определяется как unsigned int.

                    - nelem задает количество элементов таблицы;
                    - width задает количество байтов в каждом элементе
                      таблицы.

                    Функция сравнения fcmp вызывается с двумя аргу-
                    ментами: elem1 и elem2. Каждый аргумент указывает
                    на сравниваемый элемент. Функция сравнения срав-
                    нивает элементы, адресуемые указателями (*elem1 и
                    *elem2) и возвращает целое значение, зависящее от
                    результатов сравнения.

                    Для bsearch *fcmp возвращает следующее значение:
                      < 0   *elem1 <  *elem2
                      ==0   *elem1 == *elem2
                      > 0   *elem1 >  *elem2

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

 Переносимость      Поддерживается в системах UNIX и определена в
                    ANSI C.

 Смотрите также     lfind lsearch qsort

 Пример:

 #include
 #include

 #define NELEMS(arr)   (sizeof(arr) / sizeoff(arr[0]))
 int numarray[] = {123, 145, 512, 627, 800, 993};
 int numeric(int *pl, int *p2)
 {
    return(*p1 - *p2);
 }
 int lookup(int key)
 {
    int *itemptr;
    /* явное преобразование
       необходимо для исключения ошибки несовпадения типов, воз-
       никающей во время компиляции */
    itemptr = bsearch(&key, numarray, NELEMS(numarray),
        sizeof(int), (int (*)(const void *,const void *))numeric);
    return (itemptr != NULL);
 }
 int main(void)
 {
    if(lookup(512))
       printf("В таблице есть элемент 512\n");
    else
       printf("В таблице нет элемента 512\n");
    return 0;


cpp

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

 Синтаксис          #include
                    double cabs(struct complex z);

 Файл, содержащий   math.h
 прототип

 Описание           cabs - это макрокоманда, которая вычисляет абсо-
                    лютное  значение комплексного числа z. z является
                    структурой типа complex; структура  определена  в
                    math.h следующим образом:

                      struct complex {
                         double x,y;
                      };

                    где  x  есть  действительная  часть, а y - мнимая
                    часть.

                    Вызов cabs эквивалентен вызову  sqrt  с  действи-
                    тельной и мнимой частью z, как показано ниже:

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

                    При  использовании С++, можно воспользоваться ти-
                    пом complex, определенном в  файле  complex.h,  и
                    функцией abs.

 Возвращаемое       cabs возвращает абсолютное значение z типа double.
 значение           При переполнении cabs возвращает HUGE_VAL и уста-
                    навливет errno в

                      ERANGE - Результат превышает допустимые пределы.

                    Управление ошибками для cabs можно изменить с по-
                    мощью функции matherr.

 Переносимость      cabs поддерживается на системах UNIX.

 Смотрите также     abs complex fabs labs matherr

 Пример:

 #include
 #include
 int main()
 {
     struct complex z;
     double val;
     z.x=2.0;
     z.y=1.0;
     val = cabs(z);
     printf("Абсолютное значение от (%.2lfi %.2lfj) = %.2lf",z.x,
                  z.y,val);
     return 0;


cpp

calloc
 Функция            Выделяет оперативную память.

 Синтаксис          #include
                    void * calloc(size_t nitems, size_t size);

 Файл, содержащий   stdlib.h,alloc.h
 прототип

 Описание           calloc обеспечваеит доступ к памяти heap.
                    heap доступен для динамического распределения
                    блоков памяти переменной длины. Многие структуры
                    данных, например, деревья и списки, используют
                    распределение памяти heap.

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

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

                    calloc выделяет блок памяти размером nitems x
                    size. Блок обнуляется. Если размер блока превыша-
                    ет 64К то нужно использовать функцию farcalloc.

 Возвращаемое       calloc возвращает указатель на выделенный блок.
 значение           calloc возвращает NULL, если недостаочно памяти
                    для выделения нового блока, или nitems или size
                    равны 0.

 Переносимость      Поддерживается в системах UNIX и определена в ANSI
                    C. Описана в Керниган и Риччи.

 Смотрите также     faralloc free malloc realloc

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    char *str = NULL;
    /* выделить память для строки */
    str = calloc(10,sizeof(char));
    if(str)
    {
       /* скопировать в строку "Hello" */
       strcopy(str,"Hello");
       /* вывести строку */
       printf("Строка : %s\n",str);
       /* освободить память */
       free(str);
    }
    else
    {
       printf("Недостаточно памяти\n");
    }
    return(0);


cpp

ceil
 Функция            Округление.

 Синтаксис          #include
                    double ceil(double x);

 Файл, содержащий   math.h
 прототип

 Описание           ceil находит наименьшее целое число, не меньшее x.

 Возвращаемое       ceil возвращает найденное число (тип double).
 значение

 Переносимость      Поддерживается в системах UNIX и определена в ANSI
                    C.

 Смотрите также     floor fmod

 Пример:

 #include
 #include
 int main(void)
 {
    double number = 123.54;
    double down,up;
    down = floor(number);
    up = ceil(number);
    printf("Исходное число:%5.21f\n",number);
    printf("Округленное вниз :%5.21f\n",down);
    printf("Округленное вверх :%5.21f\n",up);
    return 0;


cpp

cgets
 Фукция             Cчитывает строку с консоли.

 Синтаксис          #include
                    char *cgets(char *str);

 Файл, содержащий   conio.h
 прототип

 Описание           cgets считывает символьную строку с консоли и
                    сохраняет ее (и длину строки) в буфере, указывае-
                    мом параметром str.

                    cgets считывает символы до тех пор, пока не вст-
                    ретится комбинация CR/LF (возврат каретки/перевод
                    строки), или пока не будет считано указанное чис-
                    ло символов. Если cgets считала комбинацию CR/LF,
                    она заменяет их на \0 (нулевой ограницитель стро-
                    ки).

                    До вызова cgets аргумент str[0] должен быть уста-
                    новлен на максимальную длину считываемой строки.
                    При возврате str[1] содержит количество считанных
                    символов. Символы хранятся, начиная с str[2], и
                    заканчиваются нулевым символом. Итак, аргумент
                    str должен иметь размер, по крайней мере, str[0]
                    плюс 2 байта.

 Возвращаемое       При успешном завершении cgets возвращает указатель
 значение           на str[2].

 Переносимость      Эта функция поддерживается только на компьютерах
                    IBM PC или совместимых с ними.

 Смотрите также     cputs fgets getch getche gets

 Пример:

 #include
 #include

 main()
 {
     char buffer[83];
     char *p;
     /* место под 81 символ   */
     buffer[0] = 81;
     p = cgets(buffer);
     printf("\ncgets считала %d символов: \"%s\"\n",buffer[1], p);
     printf("Возвращается указатель %p, buffer[2] на %p\n",p,&buffer);
     /* место под 5 символов и завершающий 0 */
     buffer[0] = 6;
     printf("Введите несколько символов\n");
     p = cgets(buffer);
     printf("\ncgets считала %d символов: \"%s\"\n,buffer[1], p);
     printf("Возвращается указатель %p, buffer[2] на %p\n",p,&buffer);
     return 0;


cpp

chdir
 Функция            Изменяет текущую директорию.

 Синтаксис          #include
                    int chdir(const char * path);

 Файл, содержащий   dir.h
 прототип

 Описание           Функция chdir делает директорию, определяемую ар-
                    гументом path, текущей рабочей директорией. Аргу-
                    мент path должен определять существующую директо-
                    рию.

                    Спецификация устройства также может задаваться в
                    аргументе path, например,

                      chdir("a:\\tc")

                    но изменяется только текущая директория на этом
                    устройстве; само активное устройство не изменяет-
                    ся.

 Возвращаемое       При успешном завершении функция chdir выдает зна-
 значение           чение 0. Иначе, функция возвращает значение -1, а
                    errno присваивается следующее значение:

                      ENOENT - Маршрут или имя файла не найдены.

 Переносимость      Функция chdir поддерживается на системах UNIX.

 Смотрите также     getcurdir getcwd getdisk mkdir rmdir setdisk
                    system

 Пример:

 #include
 #include
 #include

 char old_dir[MAX_DIR];
 char new_dir[MAX_DIR];
 int main(void)
 {
    if(getcurdir(0,old_dir))
    {
       perror("getcurdir()");
       exit(1);
    }
    printf("Текущая директория: \\%s\n",old_dir);
    if(chdir("\\");
    {
       perror("chdir()");
       exit(1);
    }
    if(getcurdir(0,new_dir))
    {
       perror("getcurdir()");
       exit(1);
    }
    printf("Теперть текущая директория: \\%s\n",new_dir);
    if(chdir(old_dir);
    {
       perror("chdir()");
       exit(1);
    }
    return 0;


cpp

chmod
 Функция            Изменяет режим доступа к файлу.

 Синтаксис          #include
                    int chmod(const char * path, int amode);

 Файл, содержащий   io.h
 прототип

 Описание           Функция chmod уставливает режим доступа к файлу,
                    заданному аргументом path в соответствии с мас-
                    кой, содержащейся в аргументе amode. Аргумент
                    path представляет собой адресный указатель сим-
                    вольной строки; *path является первым сиволом
                    этой строки.

                    amode может содержать одну или обе символьные
                    константы S_IWRITE и S_IREAD (определенные в фай-
                    ле sys\stat.h).

                    ---------------------------------------------------
                    Значение, amode     Режим доступа
                    ---------------------------------------------------
                    S_IWRITE             Разрешение на запись
                    S_IREAD              Разрешение на чтение
                    S_IREAD|S_IWRITE     Разрешение на чтение и запись
                    ---------------------------------------------------

 Возвращаемое       При успешном завершении изменения режима доступа к
 значение           файлу функция chmod возвращает значение 0. Иначе,
                    chmod возврашает значение -1.

                    В случае ошибки errno присваивается одно из сле-
                    дующих значений:

                      ENOENT - Маршрут или имя файла не найдены;
                      EACCES   Отказ доступа.

 Переносимость      Функция chmod поддерживается на системах UNIX.

 Смотрите также     access _chmod fstat open sopen stat

 Пример:

 #include
 #include
 #include

 void make_read_only(char *filename);
 int main(void)
 {
    make_read_only("NOTEXIST.FIL");
    make_read_only("MYFILE.FIL");
    return0 0;
 }
 void make_read_only(char *filename)
 {
    int stat;
    stat = chmod(filename, S_IREAD);
    if (stat)
       printf("Не могу сделать %s только для чтения\n",
                  filename);
    else
       print(" %s теперь имеет атрибут только для чтения\n", filename);
 }                                                                                         Результат


cpp

chsize
 Функция            Изменяет размер файла.

 Синтаксис          #include
                    int chsize(int handle, long size);

 Файл, содержащий   io.h
 прототип

 Описание           chsize изменяет размер файла, связанного с
                    дескриптором handle. Она может уменьшить или уве-
                    личить файл относительно его начального размера в
                    зависимости от значения аргумента size.

                    Режим, в котором открывается файл, должен иметь
                    разрешение на запись.

                    Если chsize увеличивает файл, то к нему присоеди-
                    няются нулевые символы (\0). Если файл уменьшается,
                    то данные за новым признаком конца файла теряют-
                    ся.

 Возвращаемое       При успешном завершении chsize возвращает 0. При
 значение           ошибке возвращается -1, а переменной errno
                    присваивается одно из следующих значений:

                      EACCES - Отказ доступа;
                      EBADF  - Неверный номер файла;
                      ENOSPC - UNIX - не для DOS.

 Переносимость      chsize уникальна для DOS.

 Смотрите также     close _creat creat open

 Пример:

 #include
 #include
 #include
 int main(void)
 {
    int handle;
    char buf[11] = "0123456789";
    /* создать текстовый файл из 10 байт */
    handle = open("DUMMY.FIL",O_CREAT);
    write(handle,buf,strlen(buf));
    /* обрезать файл до 5 байт */
    chsize(handle,5);
    /* закрыть файл */
    close(handle);
    return 0;


cpp

circle
 Функция            Рисует окружность заданного радиуса с центром в
                    точке с координатами (x,y).

 Синтаксис          #include
                    void far circle(int x,int y,int radius);

 Файл, содержащий   graphics.h
 прототип

 Описание           circle рисует  окружность  текущим  цветом с цент-
                    ром в точке (x,y) и радиусом radius.

                    Замечание. Параметр linestyle не оказывает воз-
                    действие при построении дуг, окружностей, элипсов
                    и секторов. Используется только параметр
                    thickness.

                    Если на экране окружности не выглядят круглыми,
                    измените корректирующий фактор характеристическо-
                    го отношения.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с  ними,
                    оснащенных  дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотрите также     arc ellipse fillelipse getaspectratio sector
                    setaspectratio

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 int radius = 100;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));

 /* рисует окружность */
 circle(midx,midy,radius);

 /* очистить */
 getch();
 closegraph();
 return 0;


cpp

cleardevice
 Функция            Очищает графический экран.

 Синтаксис          #include
                    void far cleardevice(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           cleardevice стирает (это значит - зарисовыва-
                    ет текущим цветом фона) весь графический экран и
                    переносит CP (текущую позицию) в начало экрана
                    (0,0).

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     clearviewport

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));

 /* установка выравнивания текста */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 /* вывод на экран сообщения */
 outtextxy(midx,midy,"Для очистки экрана нажмите любую клавишу);
 /* ожидание нажатия клавиши */
 getch();
 /* очистка экрана */
 cleardevice();
 /* вывести другое сообщение */
 outtextxy(midx,midy,"Для завершения нажмите любую клавишу");
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

clearerr
 Функция            Сброс индикации ошибок.

 Синтаксис          #include
                    void clearerr(FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           clearerr сбрасывает в 0 ошибку и признак конца
                    файла указанного потока. После того, как был ус-
                    тановлен признак ошибки, потоковые операции возв-
                    ращают состояние ошибки до тех пор, пока не будет
                    сделано обращение к clearerr или rewind.

                    Признак конца файла сбрасывается при каждой опе-
                    рации ввода.

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

 Переносимость      clearerr поддерживается на системах UNIX и опреде-
                    лена в ANSI C.

 Смотрите также     eof feof ferror perror rewind

 Пример:

 #include
 int main(void)
 {
    FILE *fp;
    char ch;
    /* открыть файл для записи */
    fp = open("DUMMY.FIL","w");
    /* вызвать ошибочное состояние */
    ch = getc(fp);
    if(ferror(fp)
    {
       /* вывести сообщение об ошибке */
       printf("Ошибка чтения из DUMMY.FIL\n");
       /* Сбросить признаки конца файла и ошибки */
       clearerr(fp);
    }
    fclose(fp);
    return 0;


cpp

clearviewport
 Функция            Очищает текущую область просмотра.

 Синтаксис          #include
                    void far clearviewport(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           clearviewport очищает текущую область просмотра
                    экрана и переносит CP ( текущую позицию ) в
                    (0,0), относительно области просмотра.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     cleardevice getviewsettings setviewport

 Пример:

 #include
 #include
 #include
 #include

 #define CLIP_ON 1 /* активизации клиппирования в области просмотра */

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int ht;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 setcolor(getmaxcolor(1));
 ht = textheight("W");
 /* сообщение выводится в область просмотра, по умолчанию это весь
    экран */
 outtextxy(0,0,"<-- 0,0 область просмотра по умолчанию");
 /* создать меньшую область просмотра */
 setviewport(50,50,getmaxx()-50,getmaxy()-50,CLIP_ON);
 /* вывести сообщение */
 outtextxy(0,0,"<-- 0,0  меньшая область просмотра");
 outtextxy(0,2*ht,"Для очистки области просмотра нажмите клавишу");
 /* ожидание нажатия клавиши */
 getch();
 /* очистка области просмотра */
 clearviewport();
 /* вывести другое сообщение */
 outtextxy(midx,midy,"Для завершения нажмите любую клавишу):
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

clock
 Функция            Определяет время процессора.

 Синтаксис          #include
                    clock_t clock(void);

 Файл, содержащий   time.h
 прототип

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

                    Для определения времени в секундах, значение,
                    возвращаемое функцией clock, должно быть поделено
                    на значение макро CLK_TCK.

 Возвращаемое       Функция  clock возвращает время процессора
 значение           с момента начала выполнения программы. Если время
                    процессора недоступно или его значение не может
                    быть интерпретировано, то функция возвращает зна-
                    чение -1.

 Переносимость      clock совместима с ANSI C.

 Смотрите также     time

 Пример:

 #include
 #include

 int main(void)
 {
     clock_t start, end;
     start = clock();
 /* Тестируемые операторы */
 delay(2000);
     end = clock();
     printf("The time was: %f\n",
                    (end - start) / CLK_TCK);
 return 0;


cpp

close
 Функция            Закрывает файл.

 Синтаксис          #include
                    int close(int handle);

 Файл, содержащий   io.h
 прототип

 Описание           close закрывает файл, связанный с дескриптором
                    handle. Аргумент handle обозначает дескриптор
                    файла, присваиваемый ему при вызове функций
                    _creat, creat, creatnew, creattemp, dup, dup2,
                    _open или open.

                    Примечание. Эта функция не записывает символ
                    Ctrl-Z в конец файла. Если вы хотите завершить
                    файл этим символом, его следует явно вывести.

 Возвращаемое       При успешном завершении close
 значение           возвращают значение 0. Иначе возвращается значе-
                    ние -1.

                    Если аргумент handle не является дескриптором от-
                    крытого файла, это приводит к неудачному заверше-
                    нию операции. errno получает следующее значение:

                      EBADF - Неверный номер файла.

 Переносимость      close поддерживается в системах UNIX.

 Смотрите также     chsize _close creat creatnew dup fclose open
                    sopen

 Пример:

 #include
 #include
 #include
 int main(void)
 {
    int handle;
    char buf[11] = "0123456789";
    /* создать файл содержащий 10 байт */
    handle = open("NEW.FIL",O_CREAT);
    if(handle > -1)
    {
        write(handle,buf,strlen(buf));
        /* закрыть файл */
        close(handle);
    }
    else
    {
        printf("Ошибка, при открытии файла\n");
    }
    return 0;


cpp

closegraph
 Функция            Прекращает работу графической системы.

 Синтаксис          #include
                    void far closegraph(void)

 Файл, содержащий   graphics.h
 прототип

 Описание           closegraph освобождает всю память,выделен-
                    ную под графическую систему, затем восстанавлива-
                    ет экран в режим, который был до вызова
                    initgraph. (Графическая система освобождает па-
                    мять, а также драйверы, шрифты и внешние буферы
                    посредством вызова _graphfreemem).

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     initgraph setgraphbufsize

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int x,y;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }

 x = getmaxx()/2;
 y = getmaxy()/2;
 /* вывод сообщения */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(x,y,"Для завершения работы графической системы нажмите
                  любую клавишу");
 /* ожидание нажатия клавиши */
 getch();
 /* закрытие графической системы */
 closegraph();

 printf("Мы опять в текстовом режиме\n");
 printf("Для завершения нажмите любую клавишу\n");
 getch();
 return 0;


cpp

clreol
 Функция            Удаляет до конца строки в текстовом окне.

 Синтаксис          #include
                    void clreol(void);

 Файл, содержащий   conio.h
 прототип

 Описание           clreol удаляет все символы от позиции курсора до
                    конца строки в текущем текстовом окне без переме-
                    щения курсора.

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

 Переносимость      clreol поддерживается только на компьютерах IBM PC
                    или совместимых с ними.

 Смотрите также     clrscr delline window

 Пример:

 #include
 int main(void)
 {
    clrscr();
    cprintf("Функция CLREOL обнуляет все символы, начиная\r\n");
    cprintf("от позиции курсора, до конца строки, внутри \r\n");
    cprintf("текущего текстового окна, без перемещения курсора.\r\n");
    cprintf("Для продолжения нажмите любую клавишу...");
    gotoxy(14,4);
    getch();
    clreol();
    getch();
    return 0;


cpp

clrscr
 Функция            Очищает окно в текстовом режиме.

 Синтаксис          #include
                    void clrscr(void);

 Файл, содержащий   conio.h
 прототип

 Описание           clrscr очищает текущее текстовое окно и перемеща-
                    ет  курсор  в  верхний левый угол экрана (в позицию
                    1,1).

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

 Переносимость      clrscr поддерживается только на компьютерах IBM PC
                    или совместимых с ними.

 Смотрите также     clreol delline window

 Пример:

 #include
 int main(void)
 {
    clrscr();
    for(i=0;i<20;i++)
      cprintf("%d\r\n",i);
    cprintf("\r\nДля очистки экрана нажмите любую клавишу");
    getch();
    clrscr();
    cprintf("Экран очищен!");
    getch();
    return 0;


cpp

complex
 Функция            Создает комплексные числа.

 Синтаксис          #include
                    complex complex(double real,double imag);

 Файл, содержащий   complex.h
 прототип

 Описание           Создает комплексное число из данных вещественной и
                    мнимой части. Если параметр imag опускается, то
                    мнимая часть считается равной 0. complex - это
                    конструктор класса С++ complex, который определен
                    в complex.h. Другие функции, которые также позво-
                    ляют работать с complex, приведены в разделе
                    "Смотри также". Некоторые из этих стандартных
                    функций переопределяются в mathh Для работы с
                    комплексными версиями этих функций требуется С++.
                    Если вы не желаете работать с С++, а предпочитае-
                    те с С, то вам доступны только конструкции типа
                    structcomplexи cabs возвращающие абсолютное
                    значение комплексного числа. Они определены в
                    mathh В complexh кроме этого переопределяются
                    операции +, -, *, /, += -= *= /= = ==и !=
                    Это позволяет использовать с комплексными числами
                    обычные операции. В выражениях вы можете исполь-
                    зовать вместе с комплексными числами, целые, ве-
                    щественные и другие числовые типы. Опереторы по-
                    токового ввода/вывода <<и >>переопределены для
                    комплексных чисел, так же как и для остальных чи-
                    сел.

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

 Переносимость      Комплексные функции требуют С++ и поэтому непере-
                    носимы. Поскольку мы следуем С++ AT&T версии 2.0,
                    то вы можете попробовать комплексные функции на
                    других компиляторах, придерживающихся этого же
                    стандарта.

 Смотрите также     abs acos arg asin atan atan, conj cos cosh
                    imag log log0,  norm  polar  pow  real  sin
                    sinh sqrt tan tanh

 Пример:

 #include
 #include
 int main(void)
 {
    double x = 3.1, y=4.2;
    complex z = complex(x,y);
    cout << "z= " << z << "\n";
    cout << "имеет вещественную часть =" << real(z) << "\n";
    cout << "имеет мнимую часть =" << imag(z) << "\n";
    cout << "z имеет сопряженное значение = " << conj(z) << "\n"
    return 0;


cpp

conj
 Функция            Возвращает комплексное сопряжение комплексного
                    числа.

 Синтаксис          #include
                    complex conj(complex x);

 Файл, содержащий   complex.h
 прототип

 Описание           conj(z) аналогично complex(real(z), -imag(z)).

 Возвращаемое       Возвращает комплексно-сопряженное к данному число.
 значение

 Смотри также       complex imag real

 Пример:

 #include
 #include
 int main(void)
 {
    double x = 3.1, y=4.2;
    complex z = complex(x,y);
    cout << "z= " << z << "\n";
    cout << "имеет вещественную часть =" << real(z) << "\n";
    cout << "имеет мнимую часть =" << imag(z) << "\n";
    cout << "z имеет сопряженное значение = " << conj(z) << "\n"
    return 0;


cpp

coreleft
 Функция            Возвращает размер неиспользуемой оперативной памяти.

 Синтаксис          В моделях данных tiny, small, medium:
                    #include
                    unsigned coreleft(void);

                    В моделях данных compact, large, huge:
                    #include
                    unsigned long coreleft(void);

 Файл, содержащий   alloc.h
 прототип

 Описание           coreleft возвращает размер неиспользуемой
                    оперативной памяти. Выводятся различные значения
                    в зависимости от модели памяти.

Возвращаемое       В малых моделях памяти coreleft возвращает
 значение           количество неиспользуемой памяти между вершиной
                    heap и стеком. В больших моделях памяти, она воз-
                    вращает объем памяти между самым верхним выделен-
                    ным блоком и концом оперативной памяти.

 Переносимость      coreleft уникальна для DOS.

 Смотрите также     allocmem brk farcoreleft malloc
 Пример:

 #include
 #include
 int main(void)
 {
    printf("Разница между самым верхним выделенным блоком и \n");
    printf("вершиной heap равна %lu байт",(unsigned long)coreleft());
    return 0;


cpp

cos
 Функция            Вычисляет косинус.

 Синтаксис          Вещественная версия     Комплексная версия
                    #include        #include
                    double cos(double x);   complex cos(complex x);

 Файл, содержащий   Вещественная версия     Комплексная версия
 прототип           math.h                  complex.h

 Описание           cos возвращает косинус введенного значения. Угол
                    задается в радианах.

                    Косинус комплексного числа определен следующим об-
                    разом:

                        cos(z)=(exp(i*z)+exp(-i*z))/2

 Возвращаемое       Вещественная версия cos возвращает значение в диа-
 значение           пазоне от -1 до 1.  Управление  ошибками  для  этой
                    функции можно изменить с помощью функции matherr.

 Переносимость      cos поддерживается в системах UNIX и определена в
                    ANSI  C. Комплексная версия требует С++ и неперено-
                    сима.

 Смотрите также     acos asin atan atan, complex matherr sin
                    tan

 Пример:

 #include
 #include
 int main(void)
 {
    double result;
    double x = 0.5;
    result = cos(x);
    printf("Косинус от %1f равен %1f\n",x,result);
    return 0;


cpp

cosh
 Функция            Вычисляет гиперболический косинус.

 Синтаксис          Вещественная версия     Комплексная версия
                    #include        #include
                    double cosh(double x);  complex cosh(complex x);

 Файл, содержащий   Вещественная версия     Комплексная версия
 прототип           math.h                  complex.h

 Описание           cosh возвращает гиперболический косинус введенного
                    значения. (e^x+e^-x)/2

                    Гиперболический косинус комплексного числа опре-
                    делен следующим образом:

                        cosh(z)=(exp(z)+exp(-z))/2

 Возвращаемое       cosh возвращает гиперболический косинус аргумента.
 значение
                    В случае переполнения cosh возвращает значение
                    HUGE_VAL с сответствующим знаком, и errno уста-
                    навливается в ERANGE.

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

 Переносимость      cosh поддерживается в системах UNIX и определена в
                    ANSI C. Комплексная версия требует С++ и скорее
                    всего непереносима.

 Смотрите также     acos asin atan atan, complex cos matherr
                    sin sinh tan tanh

 Пример:

 #include
 #include
 int main(void)
 {
    double result;
    double x = 0.5;
    result = cosh(x);
    printf("Гиперболический косинус от %1f равен %1f\n",x,result);
    return 0;


cpp

country
 Функция            Возвращает информацию, зависимую от конкретной
                    страны.

 Синтаксис          #include
                    struct country * country(int xcode,
                                             struct  country * cp);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция country определяет, каким образом должна
                    быть сформирована такая информация, как дата,
                    время, денежная единица. Значения, устанавливае-
                    мые данной функцией, зависят от используемой вер-
                    сии системы DOS.

                    Если параметр cp имеет значение -1, текущий госу-
                    дарственный стандарт устанавливается соответст-
                    венно значению аргумента xcode, который должен
                    быть ненулевым. В остальных случаях структура
                    country, указываемая адресной ссылкой cp, запол-
                    няется информацией зависимой от государственных
                    стандартов текущей страны (если xcode установлен
                    в 0), или страны, определяемой аргументом xcode.

                    Структура country определена следующим образом:

                    struct contry {
                      int co_date;          /* Формат даты */
                      char co_curr[5];      /* Символ валюты */
                      char co_thsep[2];     /* Разделитель тысяч */
                      char co_desep[2];     /* Десятичный разделитель */
                      char co_dtsep[2];     /* Разделитель даты */
                      char co_tmsep[2];     /* Разделитель времени */
                      char co_currstyle;    /* Изображение валюты */
                      char co_digits;       /* Число значащих цифр */
                                            /* в написании валюты */
                      char co_time;         /* Формат времени */
                      long co_case;         /* Выбор регистра */
                      char co_dasep[2];     /* Разделитель данных */
                      char co_fill[10];     /* Заполнитель */
                    };

                    Формат даты в переменной co_date имеет значение -
                    0 для стандарта США (месяц, день, год) - 1 для
                    европейского стандарта (день, месяц, год) - 2 для
                    японского стандарта (год, месяц, день).

                    Режим изображения денежных единиц задается пере-
                    менной co_currstyle следующим образом:
                      0  Символ валюты предшествует значению без про-
                         белов между символом и числом.
                      1  Символ валюты следует за значением без пробе-
                         лов между числом валюты и символом.
                      2  Символ валюты предшествует значению с пробе-
                         лом после символа.
                      3  Символ валюты следует за числом с одним про-
                         белом перед символом.

 Возвращаемое       Функция country возвращает в качестве значения
 значение           адресный указатель cp.  В случае ошибки возвра-
                    щается NULL.

 Переносимость      country поддерживается только на DOS версии 3.0 и
                    выше.

 Пример:

 #include
 #include

 #define USA 0

 int main(void)
 {
    struct country country_info;
    country(USA,&country_info);
    printf("Символ валюты США : %s\n",country_info.co_curr);
    return 0;


cpp

cprintf
 Функция            Осуществляет форматированный вывод на экран.

 Синтаксис          #include
                    int cprintf(const char *format[,argument,...]);

 Файл, содержащий   conio.h
 прототип

 Описание           cprintf получает набор аргументов, применяет к
                    каждому аргументу спецификацию формата, содержа-
                    щуюся в строке формата с указателем format, и вы-
                    водит отформатированные данные на экран в текущее
                    текстовое окно. Число аргументов и спецификаций
                    должно быть одинаковым.
                    Строка пишется или напрямую в видео-память, или
                    через функции BIOS, в зависимости от значения
                    глобальной переменной directvideo.
                    Описание спецификации формата приведено в функции
                    printf. В отличие от функций fprintf и printf,
                    cprintf не преобразует символы перевода строки (\n)
                    в последовательность перевода каретки/перевода
                    строки (\r\n).

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

 Переносимость      cprintf поддерживается только на компьютерах IBM PC
                    или совместимых с ними.

 Смотрите также     directvideoпеременная), fprintf printf putch
                    sprintf vprintf

 Пример:

 #include
 int main(void)
 {
    /* очистить экран */
    clrscr();
    /* создать текстовое окно */
    window(10,10,80,25);
    /* вывести в него некоторый текст */
    cprintf("Привет !!!\r\n");
    /* ждать нажатия клавиши */
    getch();
    return 0;


cpp

cputs
 Функция            Выводит строку на экран.

 Синтаксис          #include
                    int cputs(const char * str);

 Файл, содержащий   conio.h
 прототип

 Описание           cputs выводит строку str, заканчивающуюся нулем, в
                    текущее текстовое окно. К строке не присоединяет-
                    ся символ новой строки.

                    Строка выводится напрямую в память экрана при по-
                    мощи вызова BIOS, в зависимости от значения в
                    directvideo.

                    В отличие от функции puts, cputs не преобразует
                    символы перевода строки (\n) в последовательность
                    перевода каретки/перевода строки (\r\n).

 Возвращаемое       cputs возвращает последний выведенный символ.
 значение

 Переносимость      cputs поддерживается только на компьютерах IBM PC
                    или совместимых с ними.

 Смотрите также     cgets directvideoпеременная), fputs putch puts

 Пример:

 #include
 int main(void)
 {
    /* очистить экран */
    clrscr();
    /* создать текстовое окно */
    window(10,10,80,25);
    /* вывести в него некоторый текст */
    cputs("Вывод в окно \r\n");
    /* ждать нажатия клавиши */
    getch();
    return 0;


cpp

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

 Синтаксис          #include
                    int creat(const char * path, int amode);

 Файл, содержащий   io.h
 прототип

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

                    Файл создается в режиме, указываемом в глобальной
                    переменной _fmode (O_TEXT или O_BINARY).

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

                    Вызов функции creat проверяет только бит S_IWRITE
                    в слове режима доступа amode. Если данный бит ра-
                    вен 1, файл имеет разрешение на запись. Если бит
                    равен 0, то для файла разрешено только чтение.
                    Все остальные атрибуты DOS устанавливаются равны-
                    ми нулю.

                    amode может принимать одно из следующих значений
                    (определенных в файле sys\stat.h):

                    ---------------------------------------------------
                     Значение amode        Режим доступа
                    ---------------------------------------------------
                    S_IWRITE              разрешение на запись
                    S_IREAD               разрешение на чтение
                    S_IREAD|S_IWRITE      разрешение на чтение и
                                          запись
                    ---------------------------------------------------

                    Примечание. В DOS разрешение на запись влечет за
                    собой разрешение на чтение.

 Возвращаемое       При успешном завершении возвращается неотрицатель-
 значение           ное целое число - новый дескриптор файла;
                    иначе возвращается значение -1.

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

                      ENOENT - Маршрут или имя файла не найдены
                      EMFILE - Слишком много открытых файлов
                      EACCES - Отказ доступа

 Переносимость      creat поддерживается в системах UNIX.

 Смотрите также     chmod chsize close _creat creatnew creattemp
                    dup dup, _fmodeпеременная), fopen open sopen
                    write
 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    int handle;
    char buf[11] = "0123456789";

    /* изменить режим с текстового в двоичный */
    _fmode = O_BINARY;
    /* создать двоичный файл для чтения и записи */
    handle = creat("DUMMY.FIL",S_IREAD|S_IWRITE);
    /* записать в файл 10 байт */
    write(handle,buf,strlen(buf));
    /* закрыть файл */
    close(handle);
    return 0;


cpp

creatnew
 Функция            Создает новый файл.

 Синтаксис          #include
                    int creatnew(const char * path, int mode);

 Файл, содержащий   io.h
 прототип

 Описание           creatnew идентична функции _creat, за исключением
                    того, что если файл существует, то creatnew возв-
                    ращает ошибку и не изменяет файл.

                    Аргумент mode в creatnew может быть одной из сле-
                    дующих констант (определенных в dos.h):

                      FA_DRONLY   Только чтение
                      FA_HIDDEN   Скрытый файл
                      FA_SYSTEM   Системный файл

 Возвращаемое       При успешном завершении creatnew возвращает дескрип-
 значение           тор нового файла, неотрицательное число; иначе воз-
                    вращается -1.

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

                      EEXIST - Файл уже существует
                      ENOENT - Маршрут или имя файла не найдены
                      EMFILE - Слишком много открытых файлов
                      EACCES - Отказ доступа

 Переносимость      creatnew уникальна для DOS 3.0 и не работает на
                    более ранних версиях DOS.

 Смотрите также     close _creat creat creattemp dup
                    _fmodeпеременная), open

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    int handle;
    char buf[11] = "0123456789";

    /* попытка создать несуществующий файл */
    handle = creatnew("DUMMY.FIL",0);
    if(handle == -1)
       printf("DUMMY.FIL уже существует\n");
    else
    {
       printf("DUMMY.FIL успешно создан\n");
       write(handle,buf,strlen(buf));
       close(handle);
    }
    return 0;


cpp

creattemp
 Функция            Создает уникальный файл в директории, указываемой
                    в маршруте.

 Синтаксис          #include
                    int creattemp(char * path, int attrib);

 Файл, содержащий   io.h
 прототип

 Описание           Файл  создается  в режиме, указываемом в глобальной
                    переменной _fmode (O_TEXT или O_BINARY).

                    path является именем маршрута, заканчивающимся
                    символом (\). Уникальное имя файла выбирается в ди-
                    ректории, указываемой в аргументе path. Имя ново-
                    го созданного файла хранится в строке path. path
                    должен быть достаточной длины для размещения име-
                    ни результирующего файла. Этот файл автоматически
                    не удаляется при завершении программы.

                    creattemp берет аргумент attrib - слово атрибутов
                    DOS. Файл всегда открывается в двоичном режиме.
                    При успешном создании файла указатель файла уста-
                    навливается на начало этого файла. Файл открыва-
                    ется сразу для чтения и записи.

                    Аргумент attrib в creattemp может быть одной из
                    следующих констант (определенных в dos.h):

                      FA_DRONLY   Только чтение
                      FA_HIDDEN   Скрытый файл
                      FA_SYSTEM   Системный файл

 Возвращаемое       При успешном завершении возвращается дескрип-
 значение           тор нового файла, неотрицательное число; иначе воз-
                    вращается -1.

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

                      ENOENT - Маршрут или имя файла не найдены
                      EMFILE - Слишком много открытых файлов
                      EACCES - Отказ доступа

 Переносимость      creattemp уникальна для DOS 3.0 и не работает на
                    более ранних версиях DOS.

 Смотрите также     close _creat creat creatnew dup
                    _fmodeпеременная), open

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    int handle;
    char pathname[128];
    strcpy(pathname,"\\");
    /* создать уникальный файл в корневом каталоге */
    handle = creattemp(pathname,0);
    printf("Был создан файл %s\n",pathname);
    close(handle);
    return 0;


cpp

cscanf
 Функция            Выполняет форматированный ввод с консоли.

 Синтаксис          #include
                    int cscanf(char * format[,address,...]);

 Файл, содержащий   conio.h
 прототип

 Описание           cscanf считывает с консоли и просматривает набор
                    вводимых полей по одному символу. Затем каждое
                    поле форматируется в соответствии со спецификаци-
                    ей формата, передаваемой функции cscanf в строке
                    формата format. Наконец, cscanf помещает отформа-
                    тированный ввод по адресам, следующим за аргумен-
                    том format, и отображает введенные символы на эк-
                    ране. Количество спецификаций формата, адресов и
                    вводимых полей должно быть одинаковым. Специфика-
                    ция формата приведена в описании функции scanf.
                    По многим причинам cscanf может прекратить скани-
                    рование определенного поля до его нормального за-
                    вершения (символ пробела), или вообще завершить
                    ввод. Описание этих причин вы найдете в описании
                    функции scanf.

 Возвращаемое       cscanf возвращает число успешно введенных,
 значение           преобразованных и сохраненных полей; возвращаемое
                    значение не включает просмотренные, но не сохра-
                    ненные поля. Если ни одно поле не было сохранено,
                    то возвращается значение 0.

                    Если cscanf пытается считать конец файла, то воз-
                    вращается значение EOF.

 Переносимость      cscanf уникальна для DOS.

 Смотрите также     fscanf getche scanf sscanf

 Пример:

 #include

 int main(void)
 {
    char string(80);
    /* очистить экран */
    clrscr();
    /* запросить ввод от пользователя */
    cprintf("Введите строку:");
    /* считать строку */
    cscanf("%s",string);
    /* вывести введенную строку */
    cprintf("Вы ввели следующую строку: %s",string);
    return 0;


cpp

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

 Синтаксис          #include
                    char * ctime(const time_t * time);

 Файл, содержащий   time.h
 прототип

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

                      Mon Nov 21 11:31:54 1983\n\0

                    Все поля имеют постоянную ширину.

                    Глобальная переменная timezone (тип long) должна
                    содержать разницу в секундах между временем по
                    Гринвичу (GMT) и местным стандартным временем (по
                    стандарту PST timezone равна 8*60*60). Глобальная
                    переменная daylight имеет ненулевое значение
                    только, если применяется стандартное преобразова-
                    ние летнего времени для USA.

 Возвращаемое       Функция ctime  возвращает указатель на  символьную
 значение           строку, содержащую  дату  и  время.  Данная строка
                    является статической переменной, которая переза-
                    писывается при каждом вызове функции ctime.

 Переносимость      ctime поддерживается на системах UNIX и определена
                    в ANSI C.

 Смотрите также     asctime daylightпеременная), difftime ftime
                    getdate gmtime localtime settime time
                    timezoneпеременная), tzset

 Пример:

 #include
 #include

 int main(void)
 {
    time_t t;
    t = time(NULL);
    printf("Сейчас: %s\n",ctime(&t));
    return 0;


cpp

ctrlbrk
 Функция            Устанавливает программу обработки Ctrl-Break.

 Синтаксис          #include
                    void ctrlbrk(int(*handler)(void));

 Файл, содержащий   dos.h
 прототип

 Описание           Функция ctrlbrk устанавливает новую функцию обра-
                    ботки прерываний, адресный указатель которой на-
                    ходится в переменной handler. Вектор прерывания
                    0x23 модифицируется для вызова названной функции.

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

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

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

 Переносимость      Функция уникальна для системы DOS.

 Смотрите также     getcbrk signal

 Пример:

 #include
 #include

 #define ABORT 0
 int c_break(void)
 {
    print("Нажато Control-Break. Выполнение программы завершается.\n");
    return(ABORT);
 }

 main()
 {
    ctrlbrk(c_break);
    for (;;)
    {
       printf("Цикл ...\n");
    }
 }

 Вывод:

 Цикл ...
 Цикл ...
 Цикл ...
 ^C
 Нажато Control-Break. Выполнение программы завершается.

delay

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

 Синтаксис          #include
                    void delay (unsigned milliseconds);

 Файл, содержащий   dos.h
 прототип

 Описание           При вызове функции delay выполнение программы
                    приостанавливается на время, определяемое парамет-
                    ром milliseconds. Теперь отпала необходимость в
                    калибровочном вызове delay. delay отсчитывает ин-
                    тервал в миллисекундах.

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

 Переносимость      Эта функция работает только на компьютерах совмес-
                    тимых с IBM PC.

 Смотрите также     nosound sleep sound

 Пример:

 /*   выдает звук с частотой 440 Гц в течение
      500 миллисекунд  */

 #include

 int main(void)
 {
 sound(440);
 delay(500);
 nosound();
 return 0;


cpp

daylight
Функция            Определяет, должна ли производиться установка лет-
                   него времени.

Синтаксис          extern int daylight;

Объявлено в        time.h

Описание           daylight используется функциями времени и
                   даты. Устанавливается функциями tzset, ftime,
                   localtime в "1" для летнего времени, "0" для
                   стандартного времени.


cpp

delline
 Функция            Удаляет строку в текстовом окне.

 Синтаксис          #include
                    void delline(void);

 Файл, содержащий   conio.h
 прототип

 Описание           delline удаляет строку, в которой находится курсор
                    и сдвигает все строки ниже данной на одну вверх.
                    delline работает внутри текущего активного окна.

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

 Переносимость      Эта функция работает только на компьютерах совмес-
                    тимых с IBM PC.

 Смотрите также     clreol clrscr insline window

 Пример:

 #include

 int main(void)
 {
    clrscr();
    cprintf("Функция DELLINE удаляет строку, содержащую курсор\r\n");
    cprintf("и перемещает все строки, лежащие ниже ее, на одну\r\n");
    cprintf("строку вверх. DELLINE работает в текущем активном \r\n");
    cprintf("текстовом окне. Для продолжения нажмите клавишу...");
    gotoxy(1,2); /* переместить курсор на вторую строку */
    getch();
    delline();
    getch();
    return 0;


cpp

detectgraph
 Функция            Определяет графический драйвер и графический режим
                    при проверке аппаратного обеспечения.

 Синтаксис          #include
                    void far detectgraph (int far*graphdriver,
                    int far *graphmode);

 Файл, содержащий   graphics.h
 прототип

 Описание           detectgraph определяет ваш системный гра-
                    фический адаптер и выбирает режим, который обеспе-
                    чивает самое высокое разрешение для этого адапте-
                    ра. Если графический адаптер не обнаружен,
                    *graphdriver устанавливается в  -2  и  graphresult
                    будет также возвращать -2(grNotDetected).

                    *graphdriver - целое, которое определяет исполь-
                    зуемый  графический  драйвер. Вы можете задать его
                    значение, используя константу перечисляемого  типа
                    graphics_drivers, определенную в graphics.h и при-
                    веденную в следующей таблице.

                    __________________________________________
                     graphics_drivers
                     константа           численное значение
                    __________________________________________
                     DETECT              0 (запрашивает
                                            автоопределе-
                                            ние драйвера)
                     CGA                 1
                     MCGA                2
                     EGA                 3
                     EGA64               4
                     EGAMONO             5
                     IBM8514             6
                     HERCMONO            7
                     ATT400              8
                     VGA                 9
                     PC3270              10
                    __________________________________________

                    *graphmode - целое, которое определяет на-
                    чальный графический режим (если *graphdriver не
                    равен DETECT, *graphmode устанавливается в наивыс-
                    шее разрешение, допустимое для данного драйвера)
                    Вы можете задать значение *graphmode, используя
                    константу перечисляемого типа graphics_modes, оп-
                    ределенную в graphics.h и показанную в следующей
                    таблице:
 --------------------------------------------------------------
 Графическ.  graphics   Знач.  Колонок     Палитра  Страниц
 драйвер     _modes            * столбцов
 -------------------------------------------------------------
 CGA         CGAC0       0     320 x 200   C0          1
             CGAC1       1     320 x 200   C1          1
             CGAC2       2     320 x 200   C2          1
             CGAC3       3     320 x 200   C3          1
             CGAHI       4     640 x 200   2цвета      1

 MCGA        MCGAC0      0     320 x 200   C0          1
             MCGAC1      1     320 x 200   C1          1
             MCGAC2      2     320 x 200   C2          1
             MCGAC3      3     320 x 200   C3          1
             MCGAMED     4     640 x 200   2цвета      1
             MCGAHI      5     640 x 480   2цвета      1

 EGA         EGALO       0     640 x 200   16цветов    4
             EGAHI       1     640 x 350   16цветов    2

 EGA64       EGA64LO     0     640 x 200   16цветов    1
             EGA64HI     1     640 x 350   4 цвета     1

 EGA-        EGAMONOHI   3     640 x 350   2 цвета     1*
 MONO        EGAMONOHI   3     640 x 350   2 цвета     2**

 HERC        HERCMONOHI  0     720 x 348   2 цвета     2

 AT400       ATT400C0    0     320 x 200   C0          1
             ATT400C1    1     320 x 200   C1          1
             ATT400C2    2     320 x 200   C2          1
             ATT400C3    3     320 x 200   C3          1
             ATT400MED   4     640 x 200   2 цвета     1
             ATT400HI    5     640 x 400   2 цвета     1

 VGA         VGALO       0     640 x 200   16 цветов   2
             VGAMED      1     640 x 350   16 цветов   2
             VGAHI       2     640 x 380   16 цветов   1

 PC3270      PC3270HI    0     720 x 350   2 цвета     1

 IBM8514     IBM8514HI   0     640 x 480   256 цветов
             IBM8514LO   0    1024 x 768   256 цветов

  *  64К на карте EGAMONO
 **  256К на карте EGAMONO
 --------------------------------------------------------------
                     Замечание. Основная причина вызова непосредствен-
                     но detectgraph состоит в переопределении графи-
                     ческого режима , который detectgraph рекомендовал
                     initgraph.

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

 Переносимость       Функция уникальна для Turbo C++. Эта функция
                     пригодна только для компьютеров IBM PC и совмес-
                     тимых с ними, оснащенных дисплейными адаптерами,
                     поддерживающими графический режим.

 Смотрите также     graphresult initgraph

 Пример:

 #include
 #include
 #include
 #include

 /* Имена различных графических адаптеров */
 char *gname[] = { "требуется определение",
                   "CGA",
                   "EGA",
                   "EGA с 64K",
                   "монохромный EGA",
                   "IBM 8514",
                   "Hercules монохромный",
                   "AT&T 6300 PC",
                   "VGA",
                   "IBM 3270" };

 int main(void)
 {
 /* используется для определения графического адаптера */
 int graphdriver, gmode, errorcode;
 /* определение адаптера */
 detectgraph(&graphdriver,&gmode,"");
 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 /* вывести полученную информацию */
 clrscr();
 printf("Установлена плата: %s",gname[graphdriver]);
 printf("Для завершения нажмите любую клавишу...");
 getch();
 return 0;


cpp

diftime
 Функция            Вычисляет разницу между первым и вторым временем.

 Синтаксис          #include
                    double difftime(time_t time2, time_t time1);

 Файл, содержащий   time.h
 прототип

 Описание           difftime вычисляет время в секундах между time1 и
                    time2.

 Возвращаемое       Возвращает результат вычислений типа double.
 значение

 Переносимость      Совместима с UNIX и определена в ANSI C.

 Смотрите также     asctime ctime daylight(переменная), gmtime
                    localtime time timezone(переменная).

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    time_t first,second;
    clrscr();
    first = time(NULL); /* получить системное время */
    delay(2000);        /* задержка на 2000 миллисекунд */
    second = time(NULL);/* опять получить системное время */
    printf("Разница равна %f секунд",difftime(second,first);
    getch();
    return 0;


cpp

directvideo
Функция            Флаг управления видео выводом.

Синтаксис          extern int directvideo;

Объявлено в        conio.h

Описание           directvideo управляет выводом на консоль (из
                   cputs, например) напрямую через видео RAM
                   (directvideo=1) или через вызов ROM BIOS
                   (directvideo=0). Значением по умолчанию является
                   directvideo=1 (консольный вывод идет напрямую че-
                   рез видео RAM). Чтобы использовать directvideo=1,
                   видео контроллер должен быть идентичным по отно-
                   шению к IBM. Установка directvideo=0 позволяет
                   выводить на консоль на любом компьютере, совмес-
                   тимом по IBM BIOS.


cpp

disable
 Функция            Запрещает прерывания.

 Синтаксис          #include
                    void disable(void);

 Файл, содержащий   dos.h
 прототип

 Описание           Данная макрокоманда разработана с целью обеспе-
                    чения программистов гибким средством контроля над
                    прерываниями на физическом уровне.

                    Макрокоманда disable делает прерывания невозможны-
                    ми. Разрешено только прерывание NMI с внешнего ус-
                    тройства (немаскируемое прерывание).

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

 Переносимость      Данная макрокоманда уникальна для архитектуры
                    8086.

 Смотрите также     getvect enable

 Пример:

 /* Замечание.
    Это программа обработки прерывания. Вы не сможете откомпилировать
    эту программу с включенной  проверкой  переполнения  стека  (Test
    Stack Overflow - On) и получить правильно работающую программу. */

 #include
 #include
 #include

 #define INTR 0X1C  /* прерывание таймера */

 void interrupt (*oldhandler)(void);

 int count=0;

 void interrupt handler(void)
 {
    /* запрет других прерываний во время обработки этого */
    disable();
    /* увеличение глобального счетчика */
    count++;
    /* разрешение прерываний после обработки */
    enable();
    /* вызов старой программы обработки */
    oldhandler();
 }
 int main(void)
 {
    /* сохранить старый вектор */
    oldhandler = getvect(INTR);
    /* записать новый вектор */
    setvect(INTR,handler);
    /* цикл, пока счетчик не достигнет 20 */
    while(count < 20)
       printf("счетчик = %d\n",count);
    /* восстановить старый вектор */
    setvect(INTR,oldhandler);
    return 0;


cpp

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

 Синтаксис          #include
                    div_t div(int numer, int denom);

 Файл содержащий    stdlib.h
 прототип

 Описание           div делит два целых и возвращает частное и остаток
                    в структуре типа div_t. numer - делимое, denum -
                    делитель. Структура div_t определена в stdlib.h
                    следующим образом:

                    typedef struct {
                       int quot;       /*  частное  */
                       int rem;        /*  остаток  */
                    } div_t;

 Возвращаемое       div возвращает структуру типа div_t, содержащую
 значение           частное и остаток от деления.

 Переносимость      div совместима  с ANSI C.

 Смотрите также     ldiv

 Пример:

 #include
 #include
 div_t x;

 int main(void)
 {
     x = div(10,3);
     printf("10 div 3 = %d, ост = %d",x.quot,x.rem);
     return 0;
 }
 Вывод:
 10 div 3 = 3 ост = 1


cpp

dosexterr
 Функция            Получает дополнительный код ошибки DOS.

 Cинтаксис          #include
                    int dosexterr(struct DOSERROR *eblkp);

 Файл, содержащий   dos.h
 прототип

 Описание           Данная функция заполняет структуру DOSERROR с адрес-
                    ным указателем eblkp расширенной информацией об
                    ошибке, получаемой при неудачном завершении сис-
                    темного вызова DOS. Структура DOSERROR определена
                    следующим образом:

                    struct  DOSERROR {
                       int exterror;     /* дополнительная ошибка */
                       char class;       /* класс ошибки */
                       char action;      /* действия */
                       char locus;       /* местонахождение ошибки */
                    };

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

 Возвращаемое       Функция dosexterr возвращает значение переменной
 значение           exterror.

 Переносимость      Функция уникальна для системы MS DOS версии 3.X,
                    поэтому не может быть использована в более ранних
                    версиях системы DOS.

 Пример:

 #include
 #include

 int main(void)
 {
    FILE *fp;
    struct DOSERROR info;
    fp = fopen("perror.dat","r");
    if(!fp) perror("Не могу открыть файл для чтения");
    dosexterror(&info);
    printf("Дополнительная информация об ошибке DOS:\n");
    printf("  дополнительная ошибка:    %d\n",info.exterror);
    printf("           класс ошибки:    %d\n",info.class);
    printf("               действия:    %d\n",info.action);
    printf(" местонахождение ошибки:    %d\n",info.locus);
    return 0;


cpp

dostounix
 Функция            Преобразует дату и время в формат системы UNIX.

 Синтаксис          #include
                    long dostounix(struct date *d,struct dostime *t);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция dostounix конвертирует дату и время, полу-
                    чаемые функциями getdate и gettime в формат систе-
                    мы UNIX. Аргумент d является адресным указателем
                    структуры date, а аргумент t указывает на структу-
                    ру dostime, содержащие корректную информацию о
                    времени и дате системы DOS.

 Возвращаемое       Функция dostounix возвращает текущее время
 значение           системы UNIX: количество секунд, начиная с 1 янва-
                    ря 1970, 00:00:00 (время по Гринвичу).

 Переносимость      функция уникальна для системы DOS.

 Смотрите также     unixtodos

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    time_t t;
    struct time d_time;
    struct date d_date;
    struct tm *local;

    getdate(&d_date);
    gettime(&d_time);
    t = dostounix(&d_date,&d_time);
    local = localtime(&t);
    printf("Время и дата: %s\n",asctime(local));
    return 0;


cpp

drawpoly
 Функция            Рисует контур многоугольника.

 Синтаксис          #include
                    void far drawpoly (int numpoints,
                                        int far *polypoints);

 Файл, содержащий   graphics.h
 прототип

 Описание           drawpoly рисует +а многоугольник ,имеющий
                    numpoints точек, используя текущие тип линии и
                    цвет.

                    *polypoints указывает на последовательность
                    из (numpoints x 2) целых чисел.  Каждая пара
                    чисел x  и  y является координатами вершины
                    многоугольника.

                    Замечание. Для построения замкнутой фигуры, имею-
                    щей n вершин, необходимо задавать n+1 координату,
                    где n-ная координатная пара равна 0-ой.

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

 Переносимость      Функция уникальна для Turbo C++. Эта функция
                    пригодна только для компьютеров IBM PC и совмести-
                    мых с ними, оснащенных дисплейными адаптерами,
                    поддерживающими графический режим.

 Смотрите также     fillpoly floodfill graphresult setwritemode

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int maxx,maxy;
 /* наш многоугольник */
 int poly[10];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 maxy = getmaxy();

 poly[0] = 20;        /* первая точка */
 poly[1] = maxy/2;

 poly[2] = maxx-20;   /* 2 */
 poly[3] = 20;

 poly[4] = maxx-50;   /* 3 */
 poly[5] = maxy-20;

 poly[6] = maxx/2;    /* 4 */
 poly[7] = maxy/2;

 poly[8] = poly[0];   /* возврат в исходную т. */
 poly[9] = poly[1];

 /* рисует многоугольник */
 drawpoly(5,poly);

 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

dup
 Функция            Дублирует дескриптор файла.

 Синтаксис          #include
                    int dup(int handle);

 Файл, содержащий   io.h
 прототип

 Описание           Функция dup возвращает дескриптор файла, который
                    по следующим позициям совпадает с оригинальным
                    дескриптором:

                    - тот же самый открываемый файл или устройство;

                    - тот же самый адресный указатель файла (то есть
                    изменение одного адресного указателя приводит к
                    изменению другого);

                    -тот же самый метод доступа (чтение, запись, чте-
                    ние/запись).

                    Переменная handle получают значения при вызове
                    функций creat,_creat,_open, open, dup, dup2.

 Возвращаемое       При успешном завершении функция dup возвращает це-
 значение           лое неотрицательное число, обозначающее соответст-
                    вующий дескриптор файла; в противном случае функ-
                    ция dup возвращает значение -1.

                    При возникновении ошибки глобальная переменная
                    errno получает одно из следующих значений:

                      EMFILE - Слишком много открытых файлов.
                      EBADF  - Неверный номер файла.

 Переносимость      Функция dup поддерживается в системах UNIX.

 Смотрите также     _close close _creat creat creatnew creattemp
                    dup, fopen _open open

 Пример:

 #include
 #include
 #include
 #include

 void flash(FILE *stream);

 int main(void)
 {
    FILE *fp;
    char msg[] = "Тестовый пример";
    /* создание файла */
    fp = fopen("DUMMY.FIL,"w");
    if(fp)
    {
       /* записать в файл данные */
       fwrite(msg,strlen(msg),1,fp);
       clrscr();
       printf(" Для сброса буферов файла на диск нажмите клавишу ");
       getch();
       /* Сброс буферов файда на диск без его закрытия */
       flush(fp);
       printf("Буфера записаны, для завершения нажмите клавишу.");
       getch();
    }
    else
    {
       printf("Ошибка при открытии файла\n");
    }
    return 0;
 }
 void flash(FILE *stream)
 {
    int duphandle;
    /* сброс внутреннего буфера TC */
    fflash(stream);
    /* сдублировать дескриптор файла */
    duphandle = dup(fileno(stream));
    /* закрыть второй дескриптор, для сброса внутренних буферов DOS */
    close(duphandle);


cpp

dup2
 Функция            Дублирует дескриптор файла.

 Синтаксис          #include
                    int dup2(int oldhandle, int newhandle);

 Файл, содержащий   io.h
 прототип

 Описание           Функция dup2 возвращают дескриптор файла, который
                    по следующим позициям совпадает с оригинальным
                    дескриптором:

                    - тот же самый открываемый файл или устройство;

                    - тот же самый адресный указатель файла (то есть
                    изменение одного адресного указателя приводит к
                    изменению другого);

                    -тот же самый метод доступа (чтение, запись, чте-
                    ние/запись).

                    dup2 создает новый дескриптор со значением
                    newhandle Если файл связанный с дескриптором
                    newhandle открыт, то при вызове dup2 он закрывает-
                    ся.

                    Переменная newhandle и oldhandle - это дескрипторы
                    файлов, и получают значения при вызове функций
                    creat,_creat,_open, open, dup, dup2.

 Возвращаемое       При успешном завершении функция dup2 возвращает 0,
 значение           в противном случае функция dup2 возвращает значе-
                    ние -1.

                    При возникновении ошибки глобальная переменная
                    errno получает одно из следующих значений:

                      EMFILE - Слишком много открытых файлов.
                      EBADF  - Неверный номер файла.

 Переносимость      Функция dup поддерживается на системах UNIX, кроме
                    system III.

 Смотрите также     _close close _creat creat creatnew creattemp
                    dup, fopen _open open

 Пример:

 #include
 #include
 #include
 #include
 #include
 #define STDOUT 1

 int main(void)
 {
    int fptr,oldstdout;
    char msg[] = "Тестовый пример";
    /* создание файла */
    fptr = open("DUMMY.FIL",O_CREAT|O_RDWR,S_IREAD|S_IWRITE);
    if(fptr)
    {
       /* создать дополнительный дескриптор для stdout */
       oldstdout = dup(STDOUT);
       /* перенаправить стандартный вывод в файл, путем
          дублирования его дескриптора */
       dup2(fptr,STDOUT);
       /* закрыть файл */
       close(fptr);
       /* было перенаправлено в DUMMY.FIL */
       write(STDOUT,msg,strlen(msg));
       /* восстановить исходный дескриптор stdout */
       dup2(oldstdout,STDOUT);
       /* закрыть второй дескриптор stdout */
       close(oldstdout);
    }
    else
    {
       printf("Ошибка при открытии файла. \n");
    }
    return 0;


cpp

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

 Синтаксис          #include
                    char * ecvt(double value, int ndig, int *dec,
                    int * sign);

 Файл, содержащий   stdlib.h
 прототип

 Описание           Функция ecvt конвертирует значение value в строку
                    с нулевым окончанием из ndig цифр и возвращает ад-
                    ресный указатель строки. Позиция десятичной точки
                    относительно начала строки косвенным образом хра-
                    нится в параметре decpt (отрицательное значение
                    decpt означает левый отсчет полученных цифр). В
                    самой строке десятичной точки нет.Если знак ре-
                    зультата отрицательный, слово, на которое указыва-
                    ет адресный указатель sign, не равно 0, иначе оно
                    равно 0. Младшие разряды округляются.

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

 Переносимость      Функция поддерживается на системах UNIX. Она не
                    определена в стадарте ANSI C, и поэтому мы не ре-
                    комендуем использовать ее при написании переноси-
                    мых программ.

 Смотрите также     fcvt gcvt sprintf

 Пример:

 #include
 #include

 int main(void)
 {
    char *string;
    double value;
    int dec, sign;
    int ndig = 10;

    value = 9.876;
    string = ecvt(value,ndig,&dec,&sign);
    printf("Строка = %s      dec = %d sign = %d\n",string,dec,sign);
    value = -123.45;
    ndig = 15;
    string = ecvt(value,ndig,&dec,&sign);
    printf("Строка = %s      dec = %d sign = %d\n",string,dec,sign);
    value = 0.6789e5;
    ndig = 5;
    string = ecvt(value,ndig,&dec,&sign);
    printf("Строка = %s      dec = %d sign = %d\n",string,dec,sign);
    return 0;


cpp

egread
Функция            Считывает значения сегментных регистров.

Синтаксис          #include
                   void segread(struct SREGS *segp);

Файл, содержащий   dos.h
прототип

Описание           Функция segread помещает текущие значения сег-
                   ментных регистров в структуру, адресуемую пара-
                   метром segp.

                   Данный вызов предлагается использовать совместно
                   с функциями intdosx и int86x.

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

Переносимость      Функция уникальна для процессоров семейства 8086.

Смотрите также      FP_OFF intdos int6,int6x intdosx MK_FP
                    movedata

Пример:

#include
#include
int main(void)
{
   struct SREGS segs;
   segread(&segs);
   printf("Содержимое сегментных регистров: \n");
   printf("CS: %X    DS: %X\n",segs.cs, segs.ds);
   printf("ES: %X    SS: %X\n",segs.es, segs.ss);
   return 0;


cpp

ellipse
 Функция            Рисует эллиптические дуги.

 Синтаксис          #include
                    void far  ellipse (int x,int y,int stangle,
                                        int endangle,int xradius
                                        int yradius);

 Файл, содержащий   graphics.h
 прототип

 Описание           ellpise рисует эллиптическую дугу с центром
                    в точке с координатами (x,y), горизонтальной и
                    вертикальной осями радиусом xradius и yradius со-
                    ответственно,текущим цветом. Дуга рисуется от угла
                    stangle до угла endangle.Если stangle равен 0 и
                    endangle равен 360,функция arc нарисует полный эл-
                    липс.

                    Угол для arc отсчитывается против часовой стрелки,
                    где 0 градусов соответствует 3 часам на цифербла-
                    та, 90 градусов - 12 часам и т.д.

                    Замечание. Параметр linestyle не оказывает воздей-
                    ствие при построении дуг, окружностей, элипсов и
                    секторов.Используется только параметр thickness.

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

 Переносимость      Функция уникальна для Turbo C++. ellipse работает
                    только на компьютерах IBM PC и совместимых с ними,
                    оснащенных дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотрите также     arc circle fillellipse getaspctratio sector
                    setaspectratio

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 int stangle = 0,endangle = 360;
 int xradius = 100,yradius = 50;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));

 /* рисует эллипс */
 ellipse(midx,midy,stangle,endangle,xradius,yradius);

 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

enable
 Функция            Разрешает прерывания.

 Синтаксис          #incdude
                    void enable(void);

 Файл, содержащий   dos.h
 прототип

 Описание           enable предназначена для гибкого управления прерыва-
                    ниями.

                    enable - макрокоманда разрешает прерывания.

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

 Переносимость      enable уникальна для систем 80х86.

 Смотрите также     disable getvect

 Пример:

 #include

 void interrupt (*oldhandler)(void);

 int count=0;

 void interrupt handler(void)
 {
    /* запрет других прерываний во время обработки этого */
    disable();
    /* увеличение глобального счетчика */
    count++;
    /* разрешение прерываний после обрабртки */
    enable();
    /* вызов старой программы обработки */
 }
 int main(void)
 {
    /* сохранить старый вектор */
    oldhandler = getvect(0x1c);
    /* записать новый вектор */
    setvect(0x1c,handler);
    /* цикл, пока счетчик не достигнет 20 */
    while(count < 20);
    /* восстановить старый вектор */
    setvect(0x1c,oldhandler);
    return 0;


cpp

environ
Функция            Доступ к переменным окружения DOS.

Синтаксис          extern char * environ[];

Объявлено в        dos.h

Описание           environ является массивом указателей на
                   символьные строки; используется для доступа и из-
                   менения переменных окружения DOS. Каждая строка
                   массива имеет следующую форму:
                      envvar = varvalue
                   где envvar - это имя переменной окружения (такой
                   как PATH), а varvalue - это строковое значение,
                   которое присваивается переменной envvar (такое
                   как C:\BIN;C:\DOS). Строка varvalue может быть
                   пустой.
                   Когда программа начинает выполняться, атрибуты
                   операционной среды MS-DOS передаются непосредст-
                   венно в программу. Заметим, что envp, третий ар-
                   гумент функции main, равен первоначальному значе-
                   нию переменной environ.
                   Массив environ может использоваться функцией
                   getenv; однако функция putenv является единствен-
                   ной функцией, которая может изменять, удалять и
                   добавлять содержимое массива environ. Хотя и су-
                   ществует возможность изменять размеры и переме-
                   щать массив окружения процесса, переменная
                   environ автоматически регулируется таким образом,
                   что она всегда указывает на массив.


cpp

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

 Синтаксис          #include
                    int eof(int handle);

 Файл, содержащий   io.h
 прототип

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

 Возвращаемое       Если текущая позиция является концом файла, функ-
 значение           ция eof возвращает значение 1; в противном случае
                    значение 0. При возникновении ошибки возвращается
                    значение -1, и глобальная переменная errno получа-
                    ет значение:

                      EBADF - Неверный номер файла.

 Переносимость      eof уникальна для DOS.

 Смотрите также     clearerr feof ferror perror

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    FILE *temp_file;
    int handle;
    char msg[] = "Тестовый пример";
    char ch;
    /* создать уникальный временный файл */
    if((temp_file=tmpfile()) == NULL)
    {
       perror("Открытие файла:");
       exit(1);
    }
    /* получить дескриптор данного файла */
    handle = fileno(temp_file);
    /* записать в файл данные */
    write(handle,msg,strlen(msg));
    /* переместить указатель в начало файла */
    lseek(handle,0l,SEEK_SET);
    /* считывать данные до появления конца файла */
    do
    {
       read(handle,&ch,1);
       printf("%c",ch);
    } while(!eof(handle);
    /* закрыть временный файл */
    fclose(temp_file);
    return 0;


cpp

errno, _doserrno,sys_errlist, sys_nerr
Функция            Позволяет функции perror печатать сообщение об
                   ошибке.

Синтаксис          extern int errno;
                   extern int _doserrno;
                   extern char * sys_errlist[ ];
                   extern int sys_nerr;

Объявлено в        errno.h,stdlib.h(errno,_doserrno,
                   sys_errlist,sys_nerr)
                   dos.h(_doserrno)

Описание           errno, sys_errlist и sys_nerr) использую-
                   тся в функции perror для печати сообщений об
                   ошибке. _doserrno это переменная, которая переда-
                   ет многие коды ошибок DOS переменной errno; одна-
                   ко perror не использует непосредственно перемен-
                   ную _doserrno.

                   _doserrno. Когда при системном вызове DOS
                   происходит ошибка, текущий код ошибки DOS присваи-
                   вается переменной _doserrno. Переменная errno по-
                   лучает параллельное значение кода, соответствующее
                   операционной системе UNIX.

                   errno. Где бы ни произошла ошибка при системном
                   вызове, переменная errno указывает на тип ошибки.
                   Иногда errno и _doserrno бывают идентичны. В ос-
                   тальных случаях errno не содержит действительный
                   код ошибки DOS, который содержится в _doserrno.
                   При некоторых ошибках их код может присваиваться
                   только переменной errno, но не _doserrno.

                   sys_errlist. Чтобы обеспечить лучший контроль за
                   выдачей сообщений об ошибках, существует массив
                   строк сообщений, хранящийся в sys_errlist. errno
                   может использоваться в качестве индекса на мас-
                   сив, где каждый индекс соответствует требуемой
                   строке. Строка не содержит не одного символа пе-
                   рехода на новую строку.

                   sys_nerr. Данная переменная представляет собой
                   число строк сообщений об ошибках в переменной
                   sys_errlist.

                   Следующая таблица дает мнемонические значения для
                   сообщений, хранящихся в переменной sys_errlist.
---------------------------------------------------------------------
      Мнемомика                      Значение
---------------------------------------------------------------------
E2BIG              Список аргументов слишком длинный.
EACCES             Отказ доступа.
EBADF              Неверный номер файла.
ECONTR             Блоки памяти разрушены.
ECURDIR            Попытка удаления текущего директория.
EDOM               Ошибка области определения.
EEXIST             Файл уже существует.
EFAULT             Неизвестная ошибка.
EINVACC            Неверный код доступа.
EINVAL             Неверный аргумент.
EINVDAT            Неверные данные.
EINVDRV            Неверная спецификация устройства.
EINVENV            Неверное окружение.
EINVFMT            Неверный формат.
EINVFNC            Неверный номер функции.
EINVMEM            Неверный адрес блока памяти.
EMFILE             Слишком много открытых файлов.
ENMFILE            Больше нет файлов.
ENODEV             Не существует такого устройства.
ENOENT             Не существует такого файла или директории.
ENOEXEC            Ошибка формата.
ENOFILE            Не существует такого файла или директории.
ENOMEM             Не хватает памяти.
ENOPATH            Маршрут не найден.
ENOTSAM            Не такое же устройство.
ERANGE             Результат превышает допустимые пределы.
EXDEV              Перекрестная связь между устройствами.
EZERO              Ошибка 0.
---------------------------------------------------------------------

                   Следующий список дает мнемонику действительных
                   кодов ошибок DOS, которые присваиваются перемен-
                   ной _doserrno. Значения в _doserrno могут содер-
                   жать, или не содержать, (через errno) эквивалент-
                   ные строки сообщений об ошибках в sys_errlist.
---------------------------------------------------------------------
      Мнемоника           Код ошибки DOS
---------------------------------------------------------------------
E2BIG              Неверное окружение.
EACCESS            Отказ доступа.
EACCESS            Неверный доступ.
EACCESS            Текущий директорий.
EBADF              Неверный дескриптор.
EFAULT             Зарезервировано.
EINVAL             Неверные данные.
EINVAL             Неверная функция.
EMFILE             Слишком много открытых файлов.
ENOENT             Нет такого файла или директрория.
ENOEXEC            Неверный формат.
ENOMEM             Разрушен Mcb.
ENOMEM             Выход за пределы памяти.
ENOMEM             Неверный блок.
EXDEV              Неверное устройство.
EXDEV              Не такое же устройство.
---------------------------------------------------------------------

                   Пользуйтесь документом "Справочное руководство
                   программиста по DOS". В нем вы найдете подробное
                   описание кодов ошибок DOS.

Пример:

#include
#include

extern char *sys_errlist[];

main()
{
   int i=0;
   while(sys_errlist[i++]) printf("%s\n",sys_errlist[i]);
   return 0;


cpp

execl, execle,execlp, execv,execve, execvp,execvpe
 Функция            Функции, загружающие и запускающие другие программы.

 Синтаксис          int execl(char * pathname, char * arg0, arg1, ...,
                    argn, NULL);
                    int execle(char * pathname, char * arg0, arg1,
                    ..., argn, NULL, char ** envp);
                    int execlp(char * pathname, char * arg0, arg1,
                    ..., argn, NULL);
                    int execlpe(char *  pathname, char * arg0, arg1,
                    ..., argn, NULL, char ** envp);
                    int execv(char * pathname, char * argv[]);
                    int execve(char * pathname, char * argv[],
                    char ** envp);
                    int execvp(char * pathname, char * argv[]);
                    int execvpe(char * pathname, char * argv[],
                    char ** envp);

 Файл, содержащий   process.h
 прототип

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

                    pathname - это имя файла вызываемого "дочернего"
                    процесса. Функции exec... производят поиск
                    pathname, пользуясь стандартным алгоритмом системы
                    DOS:

                    - нет расширения имени файла и нет точки; в таком
                    случае производится поиск точного имени файла, ес-
                    ли такое имя не найдено, добавляется расширение
                    .com и поиск продолжается. Если и такого файла не
                    найдено, то добавляется расширение .exe и поиск
                    продолжается;

                    - расширение имени присутствует - производится по-
                    иск по точному имени файла;

                    - присутствует точка - производится поиск только
                    имени файла без расширения.

                    Суффиксы l, v, p и e, добавляемые к имени семейст-
                    ва exec... обозначают, что данная функция будет
                    работать с некоторыми особенностями:

                    p- определяет, что функция будет искать "дочернюю"
                    программу в директориях, определяемых переменной
                    среды DOS PATH. Без суффикса p поиск будет произ-
                    водиться только в рабочем каталоге. Если параметр
                    path не содержит маршрута, то поиск производится в
                    текущей директории, а затем по маршрутaм, опреде-
                    ляемым переменной окружения PATH;

                    l- показывает, что адресные указатели (arg0, arg1,
                    ..., argn) передаются, как отдельные аргументы.
                    Обычно суффикс l употребляется, когда число пере-
                    даваемых аргументов заранее вам известно;

                    v- показывает, что адресные указатели (arg[0],
                    arg[1],...arg[n]) передаются, как массив указате-
                    лей. Обычно, суффикс v используется, когда пере-
                    даeтся переменное число аргументов;

                    e- показывает, что "дочернему" процессу может быть
                    передан аргумент envp, который позволяет выбирать
                    среду "дочернего" процесса. Без суффикса e "дочер-
                    ний" процесс унаследует среду "родительского" про-
                    цесса.

                    Каждая функция семейства exec... должна иметь один
                    из двух суффиксов, специфицирующих аргументы (либо
                    l, либо v). Суффиксы определения маршрута доступа
                    (PATH) и унаследования операционной среды (p и l)
                    являются необязательными.

                    Например:

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

                    -execvpe представляет собой функцию семейства
                    exec..., которая передает массив указателей аргу-
                    ментов, подсоединяет маршрут доступа PATH для по-
                    иска "дочернего" процесса и применяет аргумент
                    envp для выбора среды "дочернего" процесса.

                    Функция семейства exec... должна передавать "до-
                    чернему" процессу хотя бы один аргумент (arg0 или
                    argv[0]). Данный аргумент, по соглашению, предс-
                    тавляет собой копию pathname. (Использование дру-
                    гих значений для нулевого аргумента не будет ошиб-
                    кой).

                    В системах DOS версий 3.X "дочерний" процесс может
                    получить аргумент pathname; в более ранних версиях
                    "дочерний" процесс не может использовать значение
                    нулевого аргумента (arg0 или argn[0]).

                    При использовании суффикса l, арг0 обычно указыва-
                    ет на pathname, а arg1, ..., argn указывают на
                    строки символов, которые формируют новый список
                    аргументов. Завершающий NULL, следующий за argn,
                    обозначает конец списка. При использовании суффик-
                    са e список назначенной среды передается с помощью
                    аргумента envp. Данный аргумент является массивом
                    из элементов типа char*. Каждый элемент указывает
                    на символьную строку с нулевым окончанием формы:

                           envvar = value , где

                    envvar- имя переменной среды, а value- значение
                    символьной строки, которая присваивается каждой
                    переменной envvar. Последним элементом в массиве
                    envp[] является адресный нуль NULL. Когда значени-
                    ем envp[0] является NULL, "дочерний" процесс на-
                    следует назначения среды "родительского" процесса.

                    Общая длина arg0+ arg1+...+argn (или arg[0]+
                    arg[1]+...+arg[n]), включая пробелы, разделяющие
                    аргументы, должна быть меньше 128 байтов. Нулевые
                    окончания не считаются. При вызове функции exec...
                    любые открытые файлы остаются открытыми и в "до-
                    чернем" процессе.

 Возвращаемое       При успешном завершении функции exec... не возвра-
 значение           щают никакого значения. При возникновении ошибки
                    функции exec... возвращают значение -1, а глобаль-
                    ная переменная errno получает одно из следующих
                    значений:

                    E2BIG  - Слишком длинный список аргументов;
                    EACCES - Отказ доступа;
                    EMFILE - Слишком много открытых файлов;
                    ENOENT - Маршрут доступа (PATH) или имя файла не
                             найдены;
                    ENOEXEC - Ошибка формата EXEC;
                    ENOMEM  - Не хватает памяти.

 Переносимость      exec... уникальна для DOS.

 Смотрите также:    abort atexit_exit exit _fpreset
                    searchpath spawn.., system

 Пример:

 /* CHILD.C Программа для всех примеров */

 #include
 #include

 main(int argc, char * argv[])
 {
    int i;
    printf("Запущен дочерний процесс ...\n");
    printf("%s\n",getenv("PATH"));
    for (i=0; i
 #include
 #include
 #include

 int main(int argc,char *argv[])
 {
     int loop;
     printf("%s работает...\n\n",argv[0]);
     if(argc == 1)  /* есть ли еще аргументы */
     {
        printf("%s запускает сама себя опять...\n",argv[0]);
        execl(argv[0],argv[0],"ONE","TWO","THREE",NULL);
        perror("EXEC:");
        exit(1);
     }
     printf("%s вызвана с аргументами:\n",argv[0]);
     for(loop = 1;loop<=argc;loop++)
        puts(argv[loop]);
     return 0;
 }

 #include
 #include
 #include
 #include
 #include

 int main(int argc,char *argv[])
 {
     int loop;
     char *new_env[] = {"TELYING",NULL};

     printf("%s работает...\n\n",argv[0]);
     if(argc == 1)  /* есть ли еще аргументы */
     {
        printf("%s запускает сама себя опять...\n",argv[0]);
        execle(argv[0],argv[0],"ONE","TWO","THREE",NULL,new_env);
        perror("EXEC:");
        exit(1);
     }
     printf("%s вызвана с аргументами:\n",argv[0]);
     for(loop = 1;loop<=argc;loop++)
        puts(argv[loop]);

     /* напечатать первый параметр среды */
     printf("env[0] = %s\n",env[0]);
     return 0;
 }

 #include
 #include
 #include
 #include

 int main(int argc,char *argv[])
 {
     int loop;
     printf("%s работает...\n\n",argv[0]);
     if(argc == 1)  /* есть ли еще аргументы */
     {
        printf("%s запускает сама себя опять...\n",argv[0]);
        execlp(argv[0],argv[0],"ONE","TWO","THREE",NULL);
        perror("EXEC:");
        exit(1);
     }
     printf("%s вызвана с аргументами:\n",argv[0]);
     for(loop = 1;loop<=argc;loop++)
        puts(argv[loop]);
     return 0;
 }

 #include
 #include
 #include
 #include
 #include
 #include

 void main(int argc,char *argv[],char **envp)
 {
     printf("Запуск CHILD с arg1, arg2 ...\n");
     execlpe("CHILD.EXE","CHILD.EXE","arg1","arg2",NULL,envp);
     perror("Ошибка EXEC");
     exit(1);
 }

 #include
 #include
 #include
 #include
 #include
 #include

 void main(int argc,char **argv)
 {
     printf("Запуск CHILD с arg1, arg2 ...\n");
     execv("CHILD.EXE",argv);
     perror("Ошибка EXEC");
     exit(1);
 }

 #include
 #include
 #include
 #include
 #include
 #include

 void main(int argc,char **argv,char **envp)
 {
     printf("Запуск CHILD с arg1, arg2 ...\n");
     execve("CHILD.EXE",argv,envp);
     perror("Ошибка EXEC");
     exit(1);
 }

 #include
 #include
 #include
 #include
 #include
 #include

 void main(int argc,char **argv)
 {
     printf("Запуск CHILD с arg1, arg2 ...\n");
     execvp("CHILD.EXE",argv);
     perror("Ошибка EXEC");
     exit(1);
 }

 #include
 #include
 #include
 #include
 #include
 #include

 int main(int argc,char **argv,char **envp)
 {
     printf("Запуск CHILD с arg1, arg2 ...\n");
     execvpe("CHILD.EXE",argv,envp);
     perror("Ошибка EXEC");
     exit(1);


cpp

exit
 Функция            Прекращает выполнение программы.

 Синтаксис          #include
                    void exit(int status);

 Файл, содержащий   process.h, stdlib.h
 прототип

 Описание           Функция exit прекращает вызываемый процесс. Перед
                    выходом из процесса все файлы закрываются, записы-
                    вается буферный вывод (ждущий вывода) и вызываются
                    зарегистрированные "функции выхода" (объявленные в
                    функции atexit).

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

                    EXIT_SUCCESS -  Нормальное завершение
                    EXIT_FAILURE -  Ненормальное завершение. Сообщает
                                    операционной системе, что программа
                                    завершилась с ошибкой.

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

 Переносимость      Функция exit совместима с системой UNIX и опреде-
                    лена в стандарте ANSI C.

 Смотрите также     Функции abort atexit exec.., _exit spawn..,
                    keepи signal

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    int status;
    printf("Нажмите клавишу 1 или 2\n");
    status = getch();
    exit(status-'0');
    return 0;  /* эта точка не достигается */


cpp

exp
 Функция            Функция экспоненты; возвращает значение е в сте-
                    пени x.

 Синтаксис          Вещественная версия       Комплексная версия
                    #include          #include
                    double exp(double x);     complex exp(complex x);

 Файл, содержащий   Вещественная версия       Комплексная версия
 прототип           math.h                    complex.h

 Описание           Функция exp вычисляет функцию экспоненты e^x;

                    Экспонента комплексного числа определена следующим
                    образом:

                       exp(x+yi) = exp(x)(cos(y)+i sin(y))

 Возвращаемое       exp  возвращает e^x.
 значение

                    Иногда аргументы функции exp выдают результат, вы-
                    зывающий переполнение или невычисляемый. Когда
                    верное значение вызывает переполнение, функция exp
                    возвращает значение HUGE_VAL. При чрезмерно боль-
                    шом результате глобальной переменной errno присва-
                    ивается значение:

                    ERANGE - результат превышает допустимые пределы.

                    При малом результате возвращается 0.0 и errno не
                    изменяется.

                    Обработку ошибок для exp можно изменить с помощью
                    matherr.

 Переносимость      Функции поддерживаются на системах UNIX и стан-
                    дартом ANSI C.

 Смотрите также     Функции frexp ldexp log log0, matherrpow
                    pow0, sqrt

 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x = 4.0;
    result = exp(x);
    printf("'e' в степени %1f (e^%1f) = %1f\n",x,x,result);
    return 0;


cpp

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

 Синтаксис          #include
                    double fabs(double x);

 Файл, содержащий   math.h
 прототип

 Описание           fabs вычисляет абсолютное значение х и возвращает
                    его как double.

 Возвращаемое       fabs возвращает абсолютное значение х.
 значение

 Переносимость      fabs доступна в UNIX и поддерживается стандартом
                    ANSI C.

 Смотрите также     abs cabs labs

 Пример:

 #include
 #include

 int main(void)
 {
    float number = -1234.0;
    printf("число:%f, абсолютное значение %f\n",number,fabs(number));
    return 0;


cpp

farcalloc
 Функция            Выделяет блок памяти в глобальном heap'e.

 Синтаксис          #include
                    void far * farcalloc(unsigned long nunits,
                                        unsigned long unitsz);

 Файл, содержащий   alloc.h
 прототип

 Описание           Функция farcalloc распределяет память в глобальном
                    heap'e под массив, состоящий из nunits элементов,
                    причем каждый элемент длиной unitsz байтов.

                    При распределении памяти глобальном heap'e помните
                    следующее:

                    - может быть распределена вся память с произволь-
                      ной выборкой (ЗУПВ);

                    - могут быть размещены блоки, размером более 64К;

                    - для доступа к размещаемым блокам используются
                      "дальние" указатели (с атрибутом "far").

                    В моделях памяти: компактных, больших и сверх
                    больших, farcalloc соответствует calloc, однако не
                    идентична. Она использует параметр типа long
                    unsigned, в то время, как обычные функции (напри-
                    мер malloc) используют параметры unsigned.

                    В модели памяти tiny эту функцию использовать
                    нельзя.

 Возвращаемое       Функция farcalloc возвращает указатель
 значение           на новый блок, или адресный нуль NULL,
                    если для размещения нового блока не хватило памя-
                    ти.

 Переносимость      Функция уникальна для системы DOS.

 Смотрите также     calloc farcoreleft farfree farmalloc malloc

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    char far *fptr;
    char *str = "Hello";
    /* выделить память */
    fptr = farcalloc(10,sizeof(char));
    if(fptr)
    {
       /* скопировать строку "Hello" в выделенный блок памяти. */
       /* Замечание. Используется функция movedata, поскольку вы
                     можете работать в малой (small) модели памяти,
                     в которой нельзя использовать функции копирова-
                     ния строки, которые подразумевают, что пара-
                     метры имеют тип near */
       movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr),
                strlen(str));
       /* вывести строку. Обратите внимание на модификатор F*/
       printf(" Строка с указателем far: %Fs\n",fptr);
       /* освободить память */
       farfree(fptr);
    }
    return 0;


cpp

farcoreleft
 Функция            Возвращает размер неиспользуемой памяти глобальном
                    heap'e.

 Синтаксис          #include
                    unsigned long farcoreleft(void);

 Файл, содержащий   alloc.h
 прототип

 Описание           Функция farcoreleft возвращает общий объем неис-
                    пользуемой памяти в области, лежащей выше послед-
                    него выделенного блока.

                    В модели памяти tiny эту функцию использовать
                    нельзя.

 Возвращаемое       farcoreleft возвращает объем неиспользуемой памяти
 значение           между самым верхним выделенным блоком и концом ОЗУ.

 Переносимость      farcoreleft уникальна для DOS.

 Смотрите также     coreleft farcalloc farmalloc

 Пример:

 #include
 #include

 int main(void)
 {
    printf("Объем неиспользуемой памяти в дальней области\n");
    printf("равен %lu байт \n",farcoreleft());
    return 0;


cpp

farfree
 Функция            Освобождает блок, размещенный в глобальном heap'e.

 Синтаксис          #include
                    void farfree(void far * block);

 Файл, содержащий   alloc.h
 прототип

 Описание           Функция farfree освобождает предварительно выделен-
                    ный в глобальном heap'e блок.

                    В модели памяти tiny эту функцию использовать
                    нельзя.

                    В моделях памяти small и medium блоки, выделенные
                    farmalloc, нельзя освободить функцией free и нао-
                    борот, т.к. в этих моделях глобальная и локальная
                    области памяти различаются.

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

 Переносимость      farfree уникальна для DOS.

 Смотрите также     farcalloc farmalloc

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    char far *fptr;
    char *str = "Hello";
    /* выделить память */
    fptr = farcalloc(10,sizeof(char));
    if(fptr)
    {
       /* скопировать строку "Hello" в выделенный блок памяти. */
       /* Замечание. Используется функция movedata, поскольку вы
                     можете работать в малой (small) модели памяти,
                     в которой нельзя использовать функции копирова-
                     ния строки, которые подразумевают, что пара-
                     метры имеют тип near */
       movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr),
                strlen(str));
       /* вывести строку. Обратите внимание на модификатор F*/
       printf(" Строка с указателем far: %Fs\n",fptr);
       /* освободить память */
       farfree(fptr);
    }
    return 0;


cpp

farheapcheck
 Функция            Просматривает и проверяет память в глобальном
                    heap'e.

 Синтаксис          #include
                    int farheapcheck(void);

 Файл, содержащий   alloc.h
 прототип

 Описание           farheapcheck проходит по глобальному heap'у,
                    проверяет все блоки, проверяя указатели, размер и
                    другие важные параметры.

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

                    Если нет глобального heap'а, то возвращается зна-
                    чение _HEAPEMPTY (1). Если глобальный heap прове-
                    рен, то возвращается_HEAPOK (2).
                    Если память запорчена, то возвращается
                    _HEAPCORRUPT(-1).

 Переносимость      farheapcheck уникальна для DOS.

 Смотрите также     heapcheck

 Пример:

 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char far *array[NUM_PTRS];
    int i;
    for(i=0; i

   cpp

     farheapcheckfree

 Функция            Проверяет свободные блоки глобального heap'a на
                    констнтное значение.

 Синтаксис          #include
                    int farheapcheckfree(unsigned int fillvalue);

 Файл, содержащий   alloc.h
 прототип

 Описание           ????????????????

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

                    Если нет глобального heap'а, то возвращается значе-
                    ние _HEAPEMPTY (1).
                    Если глобальный heap проверен, то возвращается
                    _HEAPOK (2).
                    Если память запорчена, то возвращается
                    _HEAPCORRUPT(-1).
                    Если зачение заполнения отличается от fillvalue,
                    то возвращается _BADVALUE (-3).

 Переносимость      farheapcheckfree уникальна для DOS.

 Смотрите также     farheapfillfree heapcheckfree

 Пример:

 #include
 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char far *array[NUM_PTRS];
    int i;
    int j;
    int res;
    for(i=0; i

   cpp

     farheapchecknode

 Функция            Ищет и проверяет отдельный узел глобального heap'а.

 Синтаксис          #include
                    int farheapchecknode(void *node);

 Файл, содержащий   alloc.h
 прототип

 Описание           Если узел был освобожден и farheapchecknode вызы-
                    вается с указателем на освобожденный узел, то
                    farheapchecknode может вернуть значение _BADNODE,
                    вместо предполагаемого _FREEENTRY. Это происходит
                    потому, что соседние свободные блоки сливаются и
                    блок, указанный при вызове функции, больше не су-
                    ществует.

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

                    Если нет глобального heap'a, то возвращается зна-
                    чение _HEAPEMPTY (1).
                    Если память запорчена, то возвращается
                    _HEAPCORRUPT(-1).
                    Если узел не найден, то возвращается _BADNODE
                    (-2).
                    Если узел освобожден, то возвращается _FREEENTRY
                    (3).
                    Если узел, это используемый блок, то возвращается
                    _USEDENTRY (4).

 Переносимость      farheapcheckfree уникальна для DOS.

 Смотрите также     heapchecknode

 Пример:

 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char far *array[NUM_PTRS];
    int i;
    for(i=0; i


cpp

farheapfillfree
 Функция            Заполняет свободные блоки глобального heap'а конс-
                    тантным значением.

 Синтаксис          #include
                    int farheapfillfree(unsigned int fillvalue);

 Файл, содержащий   alloc.h
 прототип

 Описание           ????????????????

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

                    Если нет глобального heap'а, то возвращается значе-
                    ние _HEAPEMPTY (1).
                    Если глобальный heap проверен, то возвращается
                    _HEAPOK (2).
                    Если память запорчена, то возвращается
                    _HEAPCORRUPT(-1).

 Переносимость      farheapfillfree уникальна для DOS.

 Смотрите также     farheapcheckfree heapfillfree
 Пример:

 #include
 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char far *array[NUM_PTRS];
    int i,j;
    int res;
    for(i=0; i


cpp

farheapwalk
 Функция            Используется для перемещения по глобальному heap
                    от узла к узлу.

 Синтаксис          #include
                    int farheapwalk(struct farheapinfo *hi);

 Файл, содержащий   alloc.h
 прототип

 Описание           farheapwalk подразумевает, что память не запорчена.
                    Для проверки перед использованием farheapwalk, вы-
                    зовите farheapcheck. При достижении последнего
                    блока функция возвращает _HEAPOK. При следующем
                    вызове farheapwalk, она вернет _HEAPEND.

                    farheapwalk получает указатель на структуру типа
                    heapinfo (определена в файле alloc.h). При первом
                    вызове farheapwalk установите поле hi.ptr в 0.
                    farheapwalk вернет вам в этом поле адрес первого
                    блока в heap памяти. Поле hi.size содержит размер
                    этого блока в байтах. hi.in_use - это флаг, кото-
                    рый устанавливается, если этот блок используется в
                    настоящий момент.

 Возвращемое        Если нет глобального heap, то возвращается значе-
 значение           ние _HEAPEMPTY (1).
                    Если структура heapinfo содержит верные данные,  то
                    возвращается _HEAPOK (2).
                    Если достигнут конец heap памяти, то возвращается
                    _HEAPEND (5).

 Переносимость      farheapwalk уникальна для DOS.

 Смотрите также     heapwalk

 Пример:

 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    struct farheapinfo hi;
    char far *array[NUM_PTRS];
    int i;
    for(i=0; i


cpp

farmalloc
 Функция            Размещает данные в области глобального heap.

 Синтаксис          #include
                    void far * farmalloc(unsigned long nbytes);

 Файл, содержащий   alloc.h
 прототип

 Описание           Функция farmalloc выделяет блок в глобальном heap,
                    размер блока в байтах передается в аргументе
                    nbytes.

                    При распределении глобального heap помните следую-
                    щее:

                    - может быть распределена вся память с произволь-
                      ной выборкой (ЗУПВ);

                    - могут быть размещены блоки, размером более 64К;

                    - для доступа к размещаемым блокам используются
                      "дальние" указатели (с атрибутом "far").

                    В моделях памяти: компактных, больших и сверх
                    больших, функция соответствует, однако не идентич-
                    на, malloc. Она получает параметр типа long
                    unsigned, в то время, как malloc использует пара-
                    метр типа unsigned.

                    В модели памяти tiny эту функцию использовать
                    нельзя.

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

 Переносимость      Функция уникальна для системы DOS.

 Смотрите также     farcalloc farcoreleft farfree farrealloc malloc

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    char far *fptr;
    char *str = "Hello";
    /* выделить память */
    fptr = farmalloc(10);
    if(fptr)
    {
       /* скопировать строку "Hello" в выделенный блок памяти. */
       /* Замечание: Используется функция movedata, поскольку вы
                     можете работать в малой (small) модели памяти,
                     в которой нельзя использовать функции копирова-
                     ния строки, которые подразумевают, что пара-
                     метры имеют тип near */
       movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr),
                strlen(str));
       /* вывести строку. Обратите внимание на модификатор F*/
       printf(" Строка с указателем far: %Fs\n",fptr);
       /* освободить память */
       farfree(fptr);
    }
    return 0;


cpp

farrealloc
 Функция            Изменяет размер выделенного глобальной heap памяти
                    блока.

 Синтаксис          #include
                    void far * farrealloc(void far * oldblock,
                                          unsigned long nbytes);

 Файл, содержащий   alloc.h
 прототип

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

                    При распределении глобальной heap памяти помните
                    следующее:

                    - может быть распределена вся память с произволь-
                      ной выборкой (ЗУПВ);

                    - могут быть размещены блоки, размером более 64К;

                    - для доступа к размещаемым блокам используются
                      "дальние" указатели (с атрибутом "far").

                    В модели памяти tiny эту функцию использовать
                    нельзя.

 Возвращаемое       Функция farrealloc возвращает указатель на
 значение           новый выделенный блок, который может отличаться
                    от  испходного. Если для размещения нового блока не
                    хватило памяти, то  функция  farrealloc  возвращает
                    NULL.

 Переносимость      Функция уникальна для системы DOS.

 Смотрите также     farmalloc realloc

 Пример:

 #include
 #include

 int main(void)
 {
    char far *fptr;
    fptr = farmalloc(10);
    printf("Адрес первого блока:%Fp\n",fptr);
    fptr = farrealloc(20);
    printf("Адрес второго блока:%Fp\n",fptr);
    farfree(fptr);
    return 0;


cpp

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

 Синтаксис          #include
                    int fclose (FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция fclose закрывает указанный поток stream;
                    Все буфера, связанные с потоком stream, перед зак-
                    рытием сбрасываются. Буфера, размещенные системой,
                    освобождаются во время процесса закрытия. Буфера,
                    назначенные функциями setbuf или setvbuf, не осво-
                    бождаются автоматически. (Однако, если в качестве
                    указателя, функции setvbuf передать 0, то он будет
                    освобожден при закрытии потока.)

 Возвращаемое       Функция fclose при успешном завершении возвращает
 значение           0. Если были обнаружены какие-либо ошибки, функция
                    fclose возвращает значение EOF.

 Переносимость      Данная функция поддерживается системой UNIX и стан-
                    дартом ANSI C.

 Смотрите также     close fcloseall fdopen fflush fflashall fopen
                    freopen

 Пример:

 #include
 #include

 int main(void)
 {
    FILE *fp;
    char buf[11] = "0123456789";
    /* создать файл содержащий 10 байт */
    fp = fopen("DUMMY.FIL","w");
    if(fp)
    {
        fwrite(&buf,strlen(buf),1,fp);
        /* закрыть файл */
        fclose(fp);
    }
    else
    {
        printf("Ошибка, при открытии файла\n");
    }
    return 0;


cpp

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

 Синтаксис          #include
                    int fcloseall(void);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция fcloseall закрывает все открытые потоки,
                    исключая stdin и stdout, stdprn, stdaux и strerr.

 Возвращаемое       fcloseall возвращает число закрытых потоков. При
 значение           возникновении ошибки возвращает EOF.

 Переносимость      поддерживается системой UNIX.

 Смотрите также     fclose fdopen flushall fopen freopen

 Пример:

 #include

 int main(void)
 {
    FILE *fp1,*fp2;
    int streams_closed;
    /* открыть два потока */
    fp1 = fopen("DUMMY.ONE","w");
    fp2 = fopen("DUMMY.TWO","w");
    /* закрыть открытые потоки */
    streams_closed = fcloseall();
    if(streams_closed == EOF)
       /* вывести сообщение об ошибке */
       perror(" Ошибка ");
    else
       /* вывести результат работы функции */
       printf("Было закрыто %d потока\n",streams_closed);
    return 0;


cpp

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

 Синтаксис          #include
                    char * fcvt(double value, int ndig, int * dec,
                    int * sign);

 Файл, содержащий   stdlib.h
 прототип

 Описание           Функция fcvt преобразует значение value в строку
                    с нулевым окончанием из ndig цифр, начиная с самой
                    левой значащей цифры, и возвращает адресный указа-
                    тель строки. Позиция десятичной точки относительно
                    начала строки косвенным образом хранится в пара-
                    метре dec (отрицательное значение decpt означает
                    левый отсчет полученных цифр). В самой строке де-
                    сятичной точки нет. Если знак результата отрица-
                    тельный, слово, на которое указывает адресный ука-
                    затель sign, имеет ненулевое значение, иначе оно
                    равно 0. Число округляется к числу разрядов, зада-
                    ваемому параметром ndig.

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

 Переносимость      Функция поддерживается на системах UNIX. Она не
                    определена  в стандарте ANSI C, и поэтому мы не ре-
                    комендуем использовать ее при написании переносимых
                    программ.

 Смотрите также     ecvt gcvt sprintf

 Пример:

 #include
 #include

 int main(void)
 {
    char *str;
    double num;
    int dec, sign;
    int ndig = 5;

    num = 9.876;
    str = fcvt(num,ndig,&dec,&sign);
    printf("Строка = %s      dec = %d sign = %d\n",string,dec,sign);
    /* отрицательное число */
    num = -123.45;
    str = fcvt(num,ndig,&dec,&sign);
    printf("Строка = %s      dec = %d sign = %d\n",string,dec,sign);
    num = 0.678e5;
    str = fcvt(num,ndig,&dec,&sign);
    printf("Строка = %s      dec = %d sign = %d\n",string,dec,sign);
    return 0;


cpp

fdopen
 Функция            Связывает поток с логическим номером файла.

 Синтаксис          #include
                    FILE * fdopen(int handle, char * type);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция fdopen связывает поток с дескриптором,
                    полученным функциями creat, dup, dup2 или open.
                    Тип потока должен совпадать с режимом, в котором
                    был открыт handle.

                    Символьная строка type имеет одно из следующих
                    значений:

                    r - открытие файла только для чтения;

                    w - создание файла для записи;

                    а - присоединение; открытие для записи в конец
                        файла или создание для записи, если файл не
                        существует;

                    r+ - открытие существующего файла для обновления
                         (чтения и записи);

                    w+ - создание нового файла для изменения;

                    a+ - открытие для присоединения; открытие (или
                         создание, если файл не существует) для обнов-
                         ления в конец файла.

                    Если данный файл открывается или создается в текс-
                    товом режиме, вы можете приписать символ t к зна-
                    чению параметра type (rt, w+t, и т.д.); аналогич-
                    но, для спецификации бинарного режима вы можете к
                    значению параметра type добавить символ b (wb,a+b,
                    и т.д.).

                    Если в параметре type отсутствуют символы t или b,
                    режим будет определяться глобальной переменной
                    _fmode. Если переменная _fmode имеет значение
                    O_BINARY, файлы будут открываться в бинарном режи-
                    ме, иначе, если _fmode имеет значение O_TEXT, фай-
                    лы открываются в текстовом режиме. Данные констан-
                    ты O_... определены в файле fcntl.h.

                    При открытии файла в режиме обновления (UPDATE),
                    над результирующим потоком stream могут быть
                    выполнены как операции ввода, так и вывода.
                    Тем не менее вывод не может следовать непосредст-
                    венно за вводом без вмешательства функций fseek
                    или rewind. Также ввод, без применения функций
                    fseek, rewind не может непосредственно следовать
                    за выводом или вводом, который встречает конец
                    файла (EOF).

 Возвращаемое       При успешном завершении fdopen  возвращает
 значение           заново открытый поток stream. В случае ошибки,
                    функция возвращают ноль (NULL).

 Переносимость      fdopen поддерживаeтся на системах UNIX.

 Смотрите также     Функции  fclose freopen fopen opene

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    int handle;
    FILE *stream;

    /* открыть файл */
    handle = open("DUMMY.FIL", O_CREAT, S_IREAD|S_IWRITE);

    /* теперь преобразуем его в поток */
    stream = fdopen(handle, "w");
    if (stream == NULL)
       printf("Ошибка fdopen\n");
    else {
       fprintf(stream, "Hello, world\n");
       fclose(stream);
    }
    return 0;


cpp

feof
 Функция            Обнаруживает конец файла (EOF) в потоке.

 Синтаксис          #include
                    int feof(FILE * stream);

 Файл, содержащий   stdio.h
 прототип

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

                    Признак конца файла сбрасывается при каждой
                    операции ввода.

 Возвращаемое
 значение           Функция feof возвращает ненулевое значение, если
                    при последней операции ввода потока stream был
                    обнаружен конец файла, и 0 в противном случае.

 Переносимость      feof доступна в системе UNIX и поддерживается
                    стандартом ANSI C.

 Смотрите также     clearerr eof ferror perror

 Пример:

 #include

 int main(void)
 {
    FILE *stream;
    char ch;

    /* открыть файл для чтения */
    stream = fopen("DUMMY.FIL", "r");
    /* ввести из файла символ */
    ch = fgetc(stream);
    /* конец файла? */
    if(feof(stream))
       printf("Конец файла\n");
    /* закрыть файл */
    fclose(stream);
    return 0;


cpp

ferror
 Функция            Обнаруживает ошибки в потоке.

 Синтаксис          #include
                    int ferror(FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция ferror является макрокомандой, которая
                    проверяет данный поток stream на ошибочную опера-
                    цию записи или чтения. Если установлен признак
                    ошибки потока stream, он сохраняет его до вызова
                    функций clearerr или rewind или до момента закры-
                    тия потока.

 Возвращаемое       Функция ferror возвращает ненулевое значение, если
 значение           в потоке stream была обнаружена ошибка.

 Переносимость      Данная функция поддерживается на системах UNIX и
                    совместима со стандартом ANSI C.

 Смотрите также     clearerr eof feof fopen gets perror

 Пример:

 #include

 int main(void)
 {
    FILE *stream;
    char ch;

    /* открыть файл для записи */
    stream = fopen("DUMMY.FIL", "w");
    /* справоцировать ошибку */
    ch = fgetc(stream);
    /* конец файла? */
    if(ferror(stream))
    {
       /* вывести сообщение об ошибке */
       printf("Ошибка чтения\n");
       /* сбросить признак ошибки */
       clearerr(stream);
    }
    fclose(stream);
    return 0;


cpp

fflush
 Функция            Сбрасывает поток.

 Синтаксис          #include
                    int fflush(FILE * stream);

 Файл, содержащий   stdio.h
 прототип

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

                    fflush не оказывает влияния на небуферизованные
                    потоки.

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

 Переносимость      Поддерживается стандартом ANSI C и совместима с
                    UNIX.

 Смотрите также     fclose flushall setbuf setvbuf

 Пример:

 #include
 #include
 #include
 #include

 void flush(FILE *stream);

 int main(void)
 {
    FILE *stream;
    char msg[] = "Тестовый пример";
    /* создать файл */
    stream = fopen("DUMMY.FIL","w");
    /* записать в файл данные */
    fwrite(msg,strlen(msg),1,stream);
    clrscr();
    printf("Для сброса потока нажмите любую клавишу ...\n");
    getch();
    /* сбросить данные в файл, без его закрытия */
    flush(stream);
    printf("Содержимое буферов сброшено в файл\n");
    printf("Для завершения нажмите любую клавишу\n");
    getch();
    return 0;
 }
 void flush(FILE *stream)
 {
    int duphandle;
    /* сбросить внутренние буфера файла */
    fflash(stream);
    /* создать второй дескриптор */
    duphandle = dup(fileno(stream));
    /* закрыть второй дескриптор для сброса буферов DOS */
    close(duphandle);


cpp

fgetc
 Функция            Получает символ из потока.

 Синтаксис          #include
                    int fgetc(FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           fgetc возвращает следующий символ из указанного
                    входного потока stream.

 Возвращаемое       При успешном завершении возвращает символ, преоб-
 значение           разованный к типу int без расширения знака. При
                    обнаружении конца файла возвращает EOF.

 Переносимость      Поддерживается стандартом ANSI C и совместима с
                    UNIX.

 Смотрите также     fgetchar fputc getc getch getchar getche
                    ungetc ungetch

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    FILE *stream;
    char msg[] = "Тестовый пример";
    char ch;
    /* создать файл для его изменения */
    stream = fopen("DUMMY.FIL","w+");
    /* записать в файл данные */
    fwrite(msg,strlen(msg),1,stream);
    /* перейти в начало файла */
    fseek(stream,0,SEEK_SET);
    do
    {
       /* ввести символ из файла */
       ch = fgetc(stream);
       /* вывести символ на экран */
       putch(ch);
    } while(ch!=EOF);
    fclose(stream);
    return 0;


cpp

fgetchar
 Функция            Получает символ из потока stdin.

 Синтаксис          #include
                    int fgetchar(void);

 Файл, содержащий   stdio.h
 прототип

 Описание           fgetchar возвращает следующий символ из потока
                    stdin. Определяется как fgetc(stdin).

 Возвращаемое       При успешном завершении возвращает символ, преоб-
 значение           разованный к типу int без расширения знака. При
                    обнаружении конца файла или ошибки возвращает EOF.

 Переносимость      Поддерживается UNIX.

 Смотрите также     fgetc fputchar getchar

 Пример:

 #include

 int main(void)
 {
    char ch;
    /* запрос ввода */
    printf("Введите символ, затем нажмите .\n");
    /* ввести символ из потока stdin */
    ch = fgetchar();
    /* напечатать введенный символ */
    printf(" Считан символ: '%c'\n",ch);
    return 0;


cpp

fgetpos
 Функция            Возвращает положение указателя текущей позиции в
                    файле.

 Синтаксис          #include
                    int fgetpos(FILE * stream, fpos_t *pos);

 Файл, содержащий   stdio.h
 прототип

 Описание           fgetpos сохраняет позицию указателя файла, связан-
                    ного с потоком stream, в месте, указываемом pos.
                    Точное значение является "волшебной булочкой",
                    другими словами, для вас оно не имеет значения.

                    Тип fpos_t описывается следующим образом:

                         typedef long fpos_t;

 Возвращаемое       При успешном завершении fgetpos возвращает 0. При
 значение           ошибке возвращает ненулевое значение и устанавли-
                    вает errno в EBADF или EINVAL.

 Переносимость      Поддерживается стандартом ANSI C.

 Смотрите также     fseek fsetpos ftell tell

 Пример:

 #include
 #include

 int main(void)
 {
    FILE *stream;
    char string[] = "Тестовый пример";
    fpos_t filepos;
    /* создать файл для его изменения */
    stream = fopen("DUMMY.FIL","w+");
    /* записать в файл данные */
    fwrite(string,strlen(string),1,stream);
    /* сообщить положение указателя */
    fgetpos(stream,&filepos);
    printf("Указатель находится в %ld позиции\n");
    fclose(stream);
    return 0;


cpp

fgets
 Функция            Получает строку символов из потока.

 Синтаксис          #include
                    char * fgets(char s, int n, FILE *stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           fgets считывает из потока stream строку символов
                    и помещает ее в s. Ввод завершается после ввода
                    n-1 символа или при вводе символа перехода на сле-
                    дующую строку, смотря что произойдет раньше. В от-
                    личие от gets, fgets прекращает ввод строки при
                    получении символа перехода на следующую строку.
                    Нулевой байт добавляется в конец строки для инди-
                    кации ее конца.

 Возвращаемое       При успешном завершении возвращает указатель на s,
 значение           при ошибке или конце файла возвращает NULL.

 Переносимость      Совместима с системой UNIX и поддерживается стандар-
                    том ANSI C. Определена также в книге Керниган и
                    Ритчи.

 Смотрите также     cgets fputs gets

 Пример:

 #include
 #include

 int main(void)
 {
    FILE *stream;
    char string[] = "Тестовый пример";
    char msg[20];
    /* создать файл для его изменения */
    stream = fopen("DUMMY.FIL","w+");
    /* записать в файл данные */
    fwrite(string,strlen(string),1,stream);
    /* перейти в начало файла */
    fseek(stream,0,SEEK_SET);
    /* ввести строку из файла */
    fgets(msg,strlen(string)+1,stream);
    /* напечатать строку */
    printf("%s",msg);
    fclose(stream);
    return 0;


cpp

filelength
 Функция            Получает размер файла в байтах.

 Синтаксис          #include
                    long filelength(int handle);

 Файл, содержащий   io.h
 прототип

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

 Возвращаемое       При успешном завершении функция filelength
 значение           возвращает значение типа long- длину файла в бай-
                    тах. При ошибке функция возвращает значение -1L, и
                    глобальной переменной errno присваивается:

                       EBADF - Неверный номер файла.

 Переносимость      filelength уникальна для DOS.

 Смотрите также     fopen lseek open

 Пример:

 #include
 #include
 #include
 #include
 #include

 int main(void)
 {
    int handle;
    char buf[11] = "0123456789";
    /* создать файл из 10 байт */
    handle = open("DUMMY.FIL",O_RDWR|O_CREAT|O_TRUNC,S_IREAD|S_IWRITE);
    write(handle,buf,strlen(buf));
    /* напечатать размер файла */
    printf("Размер файла в байтах : %ld\n",filelength(handle));
    /* закрыть файл */
    close(handle);
    return 0;


cpp

fileno
 Функция            Получает дескриптор файла.

 Синтаксис          #include
                    int fileno(FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           fileno представляет собой макрокоманду, которая
                    возвращает логический номер файла для заданного
                    потока stream. Если поток stream имеет более одно-
                    го номера, функция fileno возвращает номер, назна-
                    ченный данному потоку при первом открытии.

 Возвращаемое       fileno возвращает целое число, обозначающее
 значение           дескриптор файла, соответствующий потоку stream.

 Переносимость      Данная функция поддерживается на системах UNIX.

 Смотрите также     fdopen fopen freopen

 Пример:

 #include

 int main(void)
 {
    FILE *stream;
    int handle;
    /* создать файл */
    stream = fopen("DUMMY.FIL","w");
    /* получить дескриптор файла */
    handle = fileno(stream);
    /* напечатать его */
    printf("Дескриптор файла = %d\n",handle);
    /* закрыть файл */
    fclose(stream);
    return 0;


cpp

fillellipse
 Функция            Рисует и закрашивает эллипс.

 Синтаксис          #include
                    void far ellipse(int x,int y,int xradius,
                                      int yradius);

 Файл, содержащий   graphics.h
 прототип

 Описание           Рисует эллипс с центром в точке ( x,y ) и
                    горизонтальной и вертикальной осями xradius и
                    yradius соответственно, и закрашивает его текущими
                    цветом закраски, используя текущий шаблон.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ними,
                    оснащенных дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотрите также     arc circle ellipse getaspectratio
                    pieslices setaspectraio

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy,i;
 int xradius = 100,yradius = 50;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;

 /* цикл по шаблонам */
 for(i=EMPTY_FILL; i


cpp

fillpoly
 Функция            Рисует и закрашивает многоугольник.

 Синтаксис          #include
                    void far fillpoly (int numpoints,
                                        int far *polypoints);

 Файл, содержащий   graphics.h
 прототип

 Описание           fillpoly рисует контур многоугольника ,имею-
                    щий numpoints точек, используя текущий вид  линии
                    и  цвет (так же, как это делает drawpoly),а затем
                    закрашивает многоугольник текущим цветом закраски
                    и с помощью текущего шаблона.

                    polypoints  указывает  на  последовательность  из
                    (numpoints  x 2) целых чисел. Каждая пара чисел x
                    и y является координатами вершины многоугольника.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с  ни-
                    ми,  оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     drawpoly floodfill graphresult setfillstyle

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int i,maxx,maxy;
 /* наш многоугольник */
 int poly[10];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 maxy = getmaxy();

 poly[0] = 20;        /* первая точка */
 poly[1] = maxy/2;

 poly[2] = maxx-20;   /* 2 */
 poly[3] = 20;

 poly[4] = maxx-50;   /* 3 */
 poly[5] = maxy-20;

 poly[6] = maxx/2;    /* 4 */
 poly[7] = maxy/2;

 poly[8] = poly[0];   /* возврат в исходную т. */
 poly[9] = poly[1];

 /* цикл по шаблонам */
 for(i=EMPTY_FILL; i


cpp

findfirst
 Функция            Просматривает директорию диска.

 Синтаксис          #include
                    #include
                    int findfirst(char * pathname, struct ffblk
                                               * ffblk, int attrib);

 Файл, содержищий   dir.h
 прототип

 Описание           Функция findfirst производит поиск в директории диска
                    посредством системного вызова DOS 0x4E.

                    Параметр pathname представляет собой символьную
                    строку, содержащую необязательную спецификацию
                    дискового устройства, маршрут поиска и имя иско-
                    мого файла. Имя файла может содержать шаблоны
                    (такие как ? или *). Если соответствующий файл
                    найден, структура ffblk заполняется информацией о
                    файле и каталоге, его содержащем.

                    Cтруктура ffblk определена следующим образом:

                    struct ffblk {
                        char ff_reserved[21];  /* зарезервировано DOS */
                        char ff_attrib;        /* атрибуты */
                        int  ff_ftime;         /* время */
                        int  ff_fdate;         /* дата  */
                        long ff_fsize;         /* размер */
                        char ff_fname[13];     /* имя файла */
                    };

                    Параметр attrib - это используемый в MS-DOS бай-
                    татрибут файла, который употребляется при выборе
                    подходящих для поиска файлов. Параметр attrib мо-
                    жет быть одной из следующих определенных в файле
                    dos.h констант:

                    FA_RDONLY - атрибут "только чтение";
                    FA_HIDDEN - скрытый файл;
                    FA_SYSTEM - системный файл;
                    FA_LABEL  - метка тома;
                    FA_DIREC  - директория;
                    FA_ARCH   - архив.

                    Более подробную информацию об этих атрибутах вы
                    найдете в документе "Справочное руководство прог-
                    раммиста по DOS".

                    Отметим, что ff_ftime и ff_fdate содержат битовые
                    поля для определения даты и времени. Эти структу-
                    ры поддерживаются DOS. Обе 16-битовые структуры
                    делятся на 3 поля:

                    ff_ftime:
                    биты 0-4      Секунды, деленные на 2. (т.е. 10
                                  соответствует 20 секундам).
                    биты 5-10     минуты
                    ьиты 11-15    часы

                    ff_fdate:
                    биты 0-4      день
                    биты 5-8      месяц
                    биты 9-15     год с 1980 (т.е. 9 соответствует 1989)

                    Структура ftime объявленная в io.h, использует
                    поля времени и даты соответствующие этом. Смотри-
                    те функции getftime и setftime.

 Возвращаемое       При успешном завершении, то есть при успешном
 значение           поиске файла, соответствующего параметру pathname,
                    функция findfirst возвращает значение 0.

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

                    ENOENT - маршрут доступа или имя файла не найде-
                             ны;
                    ENMFILE - нет больше файлов.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     findnext

 Пример:

 #include
 #include

 int main(void)
 {
    struct ffblk ffblk;
    int done;
    printf("Листинг директории *.*\n");
    done = findfirst(**.**,&ffblk,0);
    while (!done)  {
      printf(" %s\n", ffblk.ff_name);
      done = findnext(&ffblk);
    }
    return 0;
 }

 Результат:

 Листинг директории *.*
   FINDFRST.C
   FINDFRST.OBJ
   FINDFRST.MAP
   FINDFRST.EXE


cpp

findnext
 Функция            Продолжает просмотр, начатый функцией findfirst.

 Синтаксис          #include
                    int fidtnext(struct ffblk * ffblk);

 Файл, содержащий   dir.h
 прототип

 Описание           Функция findnext используется для выборки последо-
                    вательности файлов, соответствующих параметру
                    pathname, задаваемому функцией findfirst. ffblk -
                    это тот же самый блок, который заполняется при
                    вызове функции findfirst. Данный блок содержит
                    всю необходимую информацию для продолжения поис-
                    ка. При каждом вызове функции findnext будет воз-
                    вращаться одно имя файла до тех пор, пока файлы,
                    соответствующие параметру, pathname не закончат-
                    ся.

 Возвращаемое       При успешном завершении, то есть при успешном
 значение           поиске файла, соответствующего параметру pathname,
                    функция findnext возвращает значение 0.

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

                    ENOENT - маршрут доступа или имя файла не найде-
                             ны;
                    ENMFILE - нет больше файлов.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     findfirst

 Пример:

 #include
 #include

 int main(void)
 {
    struct ffblk ffblk;
    int done;
    printf("Листинг директории *.*\n");
    done = findfirst(**.**,&ffblk,0);
    while (!done)  {
      printf(" %s\n", ffblk.ff_name);
      done = findnext(&ffblk);
      }
    return 0;
 }

 Результат:

 Листинг директории *.*
   FINDFRST.C
   FINDFRST.OBJ
   FINDFRST.MAP
   FINDFRST.EXE


cpp

floodfill
 Функция            Заполняет ограниченную область.

 Синтаксис          #include
                    void far floodfill(int x, int y
                                        int border);

 Файл, содержащий   graphics.h
 прототип

 Описание           floodfill заполняет ограниченную область
                    на устройствах с побитовым отображением. (x,y) -
                    произвольная точка внутри закрашиваемой области.
                    Область, граница которой окрашена цветом
                    border,заполняется текущим цветом закраски и
                    шаблоном. Если указанная точка находится внутри
                    ограниченной области,то окрашивается область, а
                    если снаружи, то закрашивается все поле за преде-
                    лами области.

                    Используйте, если это возможно, fillpoly вместо
                    floodfill. Это позволит обеспечить кодовую сов-
                    местимость с будущими версиями.

                    Замечание. floodfill не работает с драйвером
                    IBM-8514.

 Возвращаемое       Если в процессе заполнения области возникла
 значение           ошибка, то graphresult возвращает значение -7.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     drawpoly fillpoly graphresult setcolor
                    setfillstyle

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int maxx,maxy;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 maxy = getmaxy();
 /* выбор цвета рисования */
 setcolor(getmaxcolor());
 /* выбор цвета заполнения */
 selectfillstyle(SOLID_FILL,getmaxcolor());
 /* нарисовать границу вокруг экрана */
 rectangle(0,0,maxx,maxy);
 /* нарисовать несколько окружностей */
 circle(maxx/3,maxy/2,50);
 circle(maxx/2,20,100);
 circle(maxx-20,maxy-50,75);
 circle(20,maxy-20,25);
 /* ожидать нажатия клавиши */
 getch();
 /* заполнить ограниченную область */
 floodfill(2,2,getmaxcolor());
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

floor
 Функция            Округление в меньшую сторону.

 Синтаксис          #include
                    double floor(double x);

 Файл, содержащий   math.h
 прототип

 Описание           Функция floor находит наибольшее целое число не
                    превышающее значение x.

 Возвращаемое       Функция возвращает найденное целое число.
 значение           (как double).

 Переносимость      Функция поддерживаются системой UNIX и стандартом
                    ANSI C.

 Смотрите также     ceil fmod

 Пример:

 #include
 #include
 int main(void)
 {
    double number = 123.54;
    double down,up;
    down = floor(number);
    up = ceil(number);
    printf("Исходное число:%5.21f\n",number);
    printf("Округленное вниз :%5.21f\n",down);
    printf("Округленное вверх :%5.21f\n",up);
    return 0;


cpp

flushall
 Функция            Сбрасывает буфера всех потоков.

 Синтаксис          #include
                    int flushall(void);

 Файл, содержащий   stdio.h
 прототип

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

                    Все потоки остаются открытыми.

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

 Переносимость      Поддерживается системой UNIX.

 Смотрите также     fclose fcloseall fflush

 Пример:

 #include

 int main(void)
 {
    FILE *stream;
    /* создать файл */
    stream = fopen("DUMMY.FIL","w");
    /* сбросить все открытые потоки */
    printf("Сброшено %d потоков\n",flushall());
    /* закрыть файл */
    fclose(stream);
    return 0;


cpp

fmod
 Функция            Вычисляет x по модулю y, то есть остаток
                    от деления нацело x/y.

 Синтаксис          #include
                    double fmod(double x, double y);

 Файл, содержащий   math.h
 прототип

 Описание           Функция fmod вычисляет x по модулю y (то есть
                    остаток f, удовлетворяющий равенству x=iy+f для
                    целого i и 0<=fceil floor modf

 Пример:

 #include
 #include

 int main(void)
 {
    double x=5.0,y=2.0;
    double result;
    result = fmod(x,y);
    printf("Остаток от деления %1f на %1f равен %1f",x,y,result);
    return 0;
 }

 Результат:

 Остаток от деления 5.0 на 2.0 равен 1.0


cpp

fnmerge
 Функция            Создает новое имя файла из отдельных частей.

 Синтаксис          #include
                    void fnmerge(char * path, const char * drive,
                    const char * dir, const char * name,
                    const char * ext);

 Файл, содержащий   dir.h
 прототип

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

                    X:\DIR\SUBDIR\NAME.EXT   , где

                    X - спецификация устройства;

                    \DIR\SUBDIR\ - директория;

                    NAME - имя;

                    .EXT - расширение

                    fnmerge предполагает, что для запоминания постро-
                    енного имени маршрута доступа достаточно места.
                    Максимальная длина маршрута доступа определяется
                    константой MAXPATH, определенной в dir.h.

                    Две вышеописанные функции взаимообратны. Если вы
                    с помощью функции fnsplit разделите на части мар-
                    шрут доступа path, а затем сольете полученные
                    компоненты с помощью функции fnmerge, то вы снова
                    получите маршрут доступа path.

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

 Переносимость      Функция работает только в системе DOS.

 Смотрите также     fnsplit

 Пример:

 #include
 #include
 #include

 int main(void)
 {
     char drive[MAXDRIVE];
     char dir[MAXDIR];
     char file[MAXFILE];
     char ext[MAXEXT];
     char s[MAXPATH];
     int flag;
          for (;;) {
           printf("> ");
           if (!gets(s)) break;
             flag = fnsplit(s,drive,dir,file,ext);
             printf(" drive: %s, dir: %s, file: %s, ext: %s, ",
                      drive, dir, file, ext);
             printf("flags: ");
             if (flag & DRIVE)
               printf(":");
             if (flag & DIRECTORY)
               printf("d");
             if (flag & FILENAME)
               printf("f");
             if (flag & EXTENSION)
               printf("e");
               printf("\n");
             fnmerge(t,drive,dir,file,ext);
          if (strcmp(t,s) != 0)        /* shouldn't happen! */
             printf(" --> strings are different!");
          }
       }

 Вывод:
       > C:\TURBOC\FN.C
         drive: C:, dir: \TURBOC\, file: FN, ext: .C,flags: :dfe
       > FILE:C
         drive: , dir: , file: FILE, ext: .C, flags: fe
       > \TURBOC\SUBDIR\NOEXT.
        drive: , dir: \TURBOC\SUBDIR\, file: NOEXT, ext: ., flags: dfe
       > C:MYFILE
         drive: C:, dir: , file: MYFILE, ext: , flags: :f
       >  z


cpp

fnsplit
 Функция            Разделяет полное имя файла на компоненты.

 Синтаксис          #include
                    int fnsplit(char * path, char * drive,
                    char * dir, char * name, char * ext);

 Файл, содержащий   dir.h
 прототип

 Описание           Функция fnsplit берет в качестве входного аргу-
                    мента полное имя файла (то есть маршрут доступа
                    path) в форме :

                    X:\DIR\SUBDIR\NAME.EXT

                    и делит его на 4 части, которые запоминает в сим-
                    вольных строках, адресными указателями которых
                    являются: drive, dir, name, ext. (Каждый из ком-
                    понентов может получить значение NULL, что озна-
                    чает, что данный компонент был выделен, но не
                    сохранен).

                    Максимальный размер для данных символьных строк
                    задается константами MAXDRIVE, MAXDIR, MAXPATH,
                    MAXNAME, MAXEXT (определяемыми в файле dir.h),
                    причем каждая длина включает в себя место для по-
                    зиции нулевого байта.

 Константа          Максимальная            Строка
                       длина
 ----------------------------------------------------------------------
 MAXPATH                (80)             path;
 MAXDRIVE               (3)              drive; включая двоеточие (:);
 MAXDIR                 (66)             dir; включая лидирующий и
                                         хвостовой знак (\);
 MAXFILE                (9)              name;
 MAXEXT                 (5)              ext; включая ведущую точку(.)
 ----------------------------------------------------------------------

                    Функция fnsplit подразумевает, что для хранения
                    каждого компонента достаточно места ( если компо-
                    нент имеет значение, отличное от NULL).

                    При расщеплении полного имени файла (маршрута
                    доступа) на части функция fnsplit воспринимает
                    символы пунктуации следующим образом:

                    - компонент drive сохраняет двоеточие, присоеди-
                    ненное к спецификации дисковода (C:, A: и т.д);

                    -компонент dir сохраняет ведущие и хвостовые зна-
                    ки \ (\tc\include\, \source\, и т.д);

                    -компонент name включает имя файла;

                    - компонент ext сохраняет точку, предшествующую
                    расширению имени файла (.c, .exe, и т.д.).

                    Две вышеописанные функции взаимообратны. Если вы
                    с помощью функции fnsplit разделите на части мар-
                    шрут доступа path, а затем сольете полученные
                    компоненты с помощью функции fnmerge, то вы снова
                    получите маршрут доступа path.

 Возвращаемое       Функция fnsplit возвращает целое число (составлен-
 значение           ное из 5-ти флагов, описанных в файле dir.h), ко-
                    торое показывает, какие компоненты полного имени
                    файла присутствуют в path; далее перечислены фла-
                    ги и компоненты, которые они обозначают:

                    EXTENSION - расширение имени файла;
                    FILENAME  - имя файла;
                    DIRECTORY - директория (и возможные поддиректории)
                    DRIVE     - спецификация дисковода (смотрите
                                файл dir.h);
                    WILDCARD  - шаблоны (* или?).

 Переносимость      Функция работает только в системе DOS.

 Смотрите также     fnmerge

 Пример:

 #include
 #include
 #include

 int main(void)
 {
     char drive[MAXDRIVE];
     char dir[MAXDIR];
     char file[MAXFILE];
     char ext[MAXEXT];
     char *s;
     int flag;
       s=getenv("COMSPEC");
       flag = fnsplit(s,drive,dir,name,ext);
       printf("Командный процессор :");
             if (flag & DRIVE)
               printf("\tдисковод: %s\n",drive);
             if (flag & DIRECTORY)
               printf("\tдиректория: %s\n",dir);
             if (flag & FILENAME)
               printf("\tимя: %s\n",name);
             if (flag & EXTENSION)
               printf("\tрасширение: %s\n",ext);
             return 0;


cpp

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

 Синтаксис          #include
                    FILE * fopen(char * filename, char * type);

 Файл, содержащий   stdio.h
 прототип

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

                    Строка mode, используемая в функции fopen может
                    принимать следующие значения:

                    r - открытие файла только для чтения;

                    w - создание файла для записи;

                    а - присоединение; открытие для записи в конец
                        файла или создание для записи, если файл не
                        существует;

                    r+ - открытие существующего файла для обновления
                         (чтения и записи);

                    w+ - создание нового файла для изменения;

                    a+ - открытие для присоединения; открытие (или
                         создание, если файл не существует) для обнов-
                         ления в конец файла.

                    Если данный файл открывается или создается в тек-
                    стовом режиме, вы можете приписать символ t к
                    значению параметра type (rt, w+t, и т.д.); анало-
                    гично, для спецификации бинарного режима вы може-
                    те к значению параметра type добавить символ b
                    (wb,a+b, и т.д.). Если в параметре type отсутст-
                    вуют символы t или b, режим будет определяться
                    глобальной переменной _fmode. Если переменная
                    _fmode имеет значение O_BINARY, файлы будут отк-
                    рываться в бинарном режиме, иначе, если _fmode
                    имеет значение O_TEXT, файлы открываются в текс-
                    товом режиме. Данные константы O_... определены в
                    файле fcntl.h.

                    При открытии файла в режиме обновления (UPDATE),
                    над результирующим потоком stream могут быть вы-
                    полнены как операции ввода, так и вывода. Тем не
                    менее вывод не может следовать непосредственно за
                    вводом без вмешательства функций fseek или
                    rewind, а также ввод, без применения функций
                    fseek, rewind не может непосредственно следовать
                    за выводом или вводом, который встречает конец
                    файла (EOF).

 Возвращаемое       При успешном завершении fopen  возвращает
 значение           указатель на открытый поток stream. В случае
                    ошибки функция возвращает нуль (NULL).

 Переносимость      fopen поддерживаeтся на системах UNIX и опреде-
                    лена в ANSI C. Кроме этого, она описана в книге
                    Kernighan & Ritchie.

 Смотрите также     creat dup fclose fdopen ferror _fmode(пере-
                    менная), fread freopen fseek fwrite open
                    rewind setmode setmode
 Пример:

 /* Программа создает дубль AUTOEXEC.BAT */

 #include

 int main(void)
 {
    FILE *in, *out;

    if((in = fopen("\\AUTOEXEC.BAT","rt"))==NULL)
    {
      fprintf(stderr, "Не могу открыть файл \n");
      return(1);
    }

    if((out = fopen("\\AUTOEXEC.BAK","wt"))==NULL)
    {
      fprintf(stderr, "Не могу открыть выходной файл \n");
      return(1);
    }

 while(!feof(in))
     fputc(fgetc(in), out);

 fclose(in);
 fclose(out);
 return 0;


cpp

FP_OFF
 Функция            FP_OFF - получает смещение "дальнего" адреса
                    (адреса с атрибутом "far").

 Синтаксис          #include
                    unsigned FP_OFF(void far *p);

 Файл, содержащий   dos.h
 прототип

 Описание           Макрокоманда FP_OFF используется для получения
                    или установки адресного смещения указателя с ат-
                    рибутом "far".

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

 Переносимость      FP_OFF уникальна для DOS.

 Смотрите также     FP_SEG MK_FP movedata segread

 Пример:

 #include
 #include

 int main(void)
 {
    char *str = "fpoff.c";
    printf(" Смещение этой строки равно %X\n",FP_OFF(str));
    return 0;


cpp

FP_SEG
 Функция            Получает адрес сегмента с атрибутом "far" (даль-
                    ний).

 Синтаксис          #include
                    unsigned FP_SEG(void far *p);

 Файл, содержащий   dos.h
 прототип

 Описание           Макрокоманда FP_SEG используется для получения или
                    установки значения адреса сегмента для адресного
                    указателя с атрибутом "far".

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

 Смотрите также     FP_OFF MK_FP movedata segread

 Пример:

 #include
 #include

 int main(void)
 {
    char *str = "fpoff.c";
    printf(" Смещение этой строки равно %X\n",FP_OFF(str));
    return 0;


cpp

fprintf
 Функция            Посылает форматированный вывод в поток.

 Синтаксис          #include
                    int fprintf(FILE * stream, const char *format
                    [,argument,...]);

 Файл, содержащий   stdio.h
 прототип

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

                    Описание спецификаций формата приведено в описа-
                    нии функции printf.

 Возвращаемое       fprintf возвращает число выведенных байт. При появ-
 значение           лении ошибки возвращает EOF.

 Переносимость      fprintf совместима с системой UNIX и поддержи-
                    вается стандартом ANSI C. Сосместима с Kernichan
                    & Rithie.

 Смотрите также     cprintf fscanf printf putc sprintf

 Пример:

 #include

 int main(void)
 {
    FILE *stream;
    int i=100;
    char c = 'C';
    float f = 1.234;
    /* открыть файл для изменения */
    stream = fopen("DUMMY.FIL","w+");
    /* вывести в файл данные */
    fprintf(stream,"%d %c %f",i,c,f);
    /* закрыть файл */
    fclose(stream);
    return 0;


cpp

fputc
 Функция            Выводит символ в поток.

 Синтаксис          #include
                    int fputc(int c, FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция fputc выводит символ с в поток stream.

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

 Переносимость      Поддерживается системой UNIX и стандартом ANSI C.

 Смотрите также     fgetcputc

 Пример:

 #include
 int main(void)
 {
    char msg[] = "Здравствуй мир";
    int i=0;
    while(msg[i])
    {
       fputc(msg[i],stdout);
       i++;
    }
    return 0;


cpp

fputchar
 Функция            Выводит символ в поток stdout.

 Синтаксис          #include
                    int fputchar(int c);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция fputchar выводит символ с в поток stdout.
                    fputchar(c) определяется как fputc(c,stdout).

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

 Переносимость      Cовместима с системой UNIX.

 Смотрите также     fgetcharputchar

 Пример:

 #include
 int main(void)
 {
    char msg[] = "Тестовый пример";
    int i=0;
    while(msg[i])
    {
       fputchar(msg[i]);
       i++;
    }
    return 0;


cpp

fputs
 Функция            Выводит строку символов в поток.

 Синтаксис          #include
                    int fputs(char * string, FILE * stream);

 Файл, содержащий   stdio.h
 прототип

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

 Возвращаемое       При успешном завершении fputs возвращает последний
 значение           выведенный символ. В противном случае возвращает EOF.

 Переносимость      fputs поддерживается системой UNIX и стандартом
                    ANSI C. Кроме этого определена в Kernighan &
                    Ritchie.

 Cмотрите также     fgets, gets, puts.

 Пример:

 #include

 int main(void)
 {
    /* вывести строку в поток */
    fputs("Тестовый пример",stdout);
    return 0;


cpp

fread
 Функция            Считывает данные из потока.

 Синтаксис          #include
                    size_t fread(void *ptr, size_t size, size_t n,
                                                       FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция fread считывает n элементов данных, каждый
                    длиной size байтов, из потока stream в блок с ад-
                    ресной ссылкой ptr.

                    Общее число вводимых байт равно n x size.

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

                    В случае достижения конца файла или возникновения
                    ошибки функция fread возвращает short count (воз-
                    можно 0).

 Переносимость      Данная функция поддерживается системой UNIX и
                    стандартом ANSI C.

 Смотрите также     fopen fwrite printf read

 Пример:

 #include
 #include

 int main(void)
 {
    FILE *stream;
    char msg[] = "Тестовый пример";
    char buf[20];
    if(stream = fopen("DUMMY.FIL","w+")) == NULL)
    {
       fprintf(stderr,"Не могу открыть файл\n");
       return 1;
    }
    /* вывести в файл данные */
    fwrite(msg,strlen(msg)+1,1,stream);
    /* перейти на начало файла */
    fseek(stream,SEEK_SET,0);
    /* прочитать данные */
    fread(buf,strlen(msg)+1,1,stream);
    printf("%s\n",buf);
    fclose(stream);
    return 0;


cpp

free
 Функция            Освобождает память, выделенную под блок.

 Синтаксис          #include
                    void free(void *block);

 Файл, содержащий   stdlib.h и alloc.h
 прототип

 Описание           free освобождает блок памяти, выделенный функциями
                    calloc, malloc или realloc.

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

 Переносимость      free совместима с системой UNIX и поддерживается
                    стандартом ANSI C.

 Смотрите также     calloc freemem malloc realloc strdup

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    char *str;
    /* выделить память под строку */
    str = malloc(10);
    /* скопировать в строку "Hello" */
    strcpy(str,"Hello");
    /* вывести строку */
    printf("Строка: %s\n",str);
    /* освободить память */
    free(str);
    return 0;


cpp

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

 Синтаксис          #include
                    int freemem(unsigned seg);

 Файл, содержащий   dos.h
 прототип

 Описание           freemem освобождае блок памяти выделенный пред-
                    шествовавшим вызовом allocmem. seg - адрес сег-
                    мента выделенного блока.

 Возвращаемое       При успешном завершении возвращает 0, при ошибке
 значение           возвращает -1 и устанавливает глобальную пере-
                    менную erron равной:

                    ENOMEM - Недостаточно памяти.

 Смотрите также     allocmem free

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    unsigned int size,segp;
    int stat;
    size = 64;  /* выделить блок размером 1024 (64х16) байт */
    stat = allocmem(size,&segp);
    if(stat == 0)
       printf("Память выделена в сегменте %X\n",segp);
    else
       printf("Максимально доступно %u параграфов памяти\n",stat);
    freemem(segp);
    return 0;


cpp

freopen
 Функция            Связывет с потоком новый файл.

 Синтаксис          #include
                    FILE * freopen(char * filename, char * mode,
                                FILE *stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция freopen замещает указанным файлом откры-
                    тый поток stream. Функция freopen закрывает файл,
                    связанный со stream, независимо от откраваемого
                    файла. Ее можно использовать для изменения пото-
                    ков, связанных с stdin, stdout или stderr.

                    Строка mode, используемая в функции freopen, мо-
                    жет принимать следующие значения:

                    r - открытие файла только для чтения;

                    w - создание файла для записи;

                    а - присоединение; открытие для записи в конец
                        файла или создание для записи, если файл не
                        существует;

                    r+ - открытие существующего файла для обновления
                         (чтения и записи);

                    w+ - создание нового файла для изменения;

                    a+ - открытие для присоединения; открытие (или
                         создание, если файл не существует) для об-
                         новления в конец файла.

                    Если данный файл открывается или создается в тек-
                    стовом режиме, вы можете приписать символ t к
                    значению параметра mode (rt, w+t, и т.д.); анало-
                    гично, для спецификации бинарного режима вы може-
                    те к значению параметра mode добавить символ b
                    (wb,a+b, и т.д.). Если в параметре mode отсутст-
                    вуют символы t или b, режим будет определяться
                    глобальной переменной _fmode. Если переменная
                    _fmode имеет значение O_BINARY, файлы будут отк-
                    рываться в бинарном режиме, иначе, если _fmode
                    имеет значение O_TEXT, файлы открываются в текс-
                    товом режиме. Данные константы O_... определены в
                    файле fcntl.h.

                    При открытии файла в режиме обновления (UPDATE),
                    над результирующим потоком stream могут быть вы-
                    полнены как операции ввода, так и вывода. Тем не
                    менее вывод не может следовать непосредственно за
                    вводом без вмешательства функций fseek или
                    rewind, а также ввод без применения функций
                    fseek, rewind не может непосредственно следовать
                    за выводом или вводом, который встречает конец
                    файла (EOF).

 Возвращаемое       При успешном завершении, freopen  возвращает
 значение           указатель на открытый поток stream. В случае
                    ошибки, функция возвращает ноль (NULL).

 Переносимость      freopen поддерживаeтся на системах UNIX
                    и совместима со стандартом ANSI C.

 Смотрите также     fclose fdopen fopen open setmode

 Пример:

 #include

 int main(void)
 {
    /* перенаправить стандартный вывод в файл */
    if(freopen("OUTPUT.FIL","w",stdout) == NULL)
      fprintf(stderr,"Ошибка перенаправления потока\n");
    /* этот вывод будет осуществляться в файл */
    printf("этот вывод будет осуществляться в файл\n");
    /* закрыть стандартный вывод */
    close(stdout);
    return 0;


cpp

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

 Синтаксис          #include
                    double frexp(double value, int * exponent);

 Файл, содержащий   math.h
 прототип

 Описание           frexp вычисляет мантиссу m (типа double, большее
                    или равное 0.5 и меньше 1.0) и целое n, такое,
                    что x равно m x 2^n. frexp сохраняет n в целой
                    переменной, на которую указывает exponent.

 Возвращаемое       frexp возвращает мантиссу m.
 значение

                    Обработку ошибочных состояний для frexp можно мо-
                    дифицировать с помощью функции matherr.

 Переносимость      frexp совместима с UNIX и поддерживается стандартом
                    ANSI C.

 Смотрите также     exp ldexp

 Пример:

 #include
 #include

 int main(void)
 {
    double mantissa,number;
    int exponent;
    number = 8.0;
    mantissa = frexp(number,&exponent);
    printf("Число %1f равно %1f умножить на 2 в степени %d\n",
          number,mantissa,exponent);
    return 0;


cpp

fscanf
 Функция            Выполняет форматированный ввод из потока.

 Синтаксис          #include
                    int fscanf(FILE * stream, char * format[,
                    adress,...]);

 Файл, содержащий   stdio.h
 прототип

 Описание           fscanf сканирует посимвольно набор вводимых полей,
                    считывая их из потока. Затем каждое поле из пото-
                    ка форматируется в соответствии со спецификацией
                    формата, которая передается fscanf в виде указа-
                    теля на строку format. Полученное в результате
                    этого поле fscanf запоминает в аргументах, пере-
                    даваемых функции fscanf после параметра format.
                    Количество аргументов должно совпадать с количес-
                    твом спецификаций формата.

                    Описание спецификаций формата приведено в описа-
                    нии функции scanf.

                    fscanf завершает сканирование отдельного поля при
                    появлении пробела, являющегося разделителем, или
                    при вводе поля, для которого указана ширина. Эти
                    случаи обсуждаются в описании функции scanf.

 Возвращаемое       Функция fscanf возвращает количество успешно про-
 значение           читанных, преобразованных и запомненных входных
                    полей; возвращаемое значение не включает в себя
                    прочитанные поля, которые не были сохранены.

                    Если fscanf делает попытку чтения в конце файла,
                    то возвращается EOF. Если не было записано ни од-
                    ного поля, возвращается значение 0.

 Переносимость      Функция fscanf поддерживается на системах UNIX
                    и определена в стандарте Kernighan & Ritchie. Она
                    поддерживается стандартом ANSI C.

 Смотрите также     atof cscanf fprintf printf scanf sscanf
                    vfscanf vscanf vsscanf

 Пример:

 #include
 #include

 int main(void)
 {
    int i;
    printf("Введите целое число:");
    /* ввести из стандартного потока stdout целое число */
    if(fscanf(stdin,"%d",&i))
      printf("Целое равно:%d\n",i);
    else
     {
      fprintf(stderr,"Ошибка чтения целого\n");
      exit(1);
     }
    return 0;


cpp

fseek
 Функция            Устанавливает указатель файла в потоке.

 Синтаксис          #include
                    int fseek(FILE * stream, long offset,
                                                     int fromwhere);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция fseek устанавливает адресный указатель
                    файла, соответствующий потоку stream, в новую по-
                    зицию, которая расположена по смещению offset от-
                    носительно места в файле, определяемого парамет-
                    ром fromwhere.

                    Параметр fromwhere может иметь одно из трех зна-
                    чений 0, 1 или 2, которые представлены тремя сим-
                    волическими константами (определенными в файле
                    stdio.h), следующим образом:

                    ---------------------------------------------------
                    Параметр             Размещение в файле
                    fromwhere
                    --------------------------------------------------
                    SEEK_SET (0)          начало файла;
                    SEEK_CUR (1)          позиция текущего указателя
                                          файла;
                    SEEK_END (2)          конец файла (EOF);
                    --------------------------------------------------

                    Функция fseek сбрасывает любой символ, записанный
                    с помощью функции ungetc.

                    Функция fseek используется с операциями ввода/вы-
                    вода в поток. При работе с дескриптором файла
                    пользуйтесь функцией lseek.

                    После этой операции можно производить как ввод,
                    так и вывод в поток.

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

                    Примечание. Функция fseek может вернуть нулевое
                    значение даже в случае, если этого не было. Это
                    происходит в результате того, что DOS, которая и
                    перемещает указатель, не проверяет его установку.
                    fseek возвращает индикатор ошибки только в слу-
                    чае, если устройство или файл не открыты.

 Переносимость      Данная функция поддерживаются на системах UNIX
                    и стандартом ANSI C.

 Смотрите также     fgetpos fopen fsetpos ftell lseek rewind
                    setbuf tell

 Пример:

 #include
 int main(void)
 {
    FILE *stream;
    stream = fopen("MYFILE.TXT", "r");
    print("filesize of MYFILE.TXT is %ld bytes\n",
           filesize(stream));
 }
 long filesize(FILE *stream);
 {
    long curpos,length;
    /* сохранить текущее положение указателя */
    curpos = ftell(stream);
    /* перейти в конец файла */
    fseek(stream, 0L, SEEK_END);
    /* получить текущее положение указателя */
    length = ftell(stream);
    /* восстановить старое положение */
    fseek(stream, curpos, SEEK_SET);
    return(length);


cpp

fsetpos
 Функция            Позиционирует указатель текущей позиции в файле,
                    связанном с потоком stream.

 Синтаксис          #include
                    int fsetpos(FILE *stream, const fpos_t *pos);

 Файл содержащий    stdio.h
 прототип

 Описание           fsetpos устанавливает указатель текущей позиции
                    файла, связанного с потоком stream в новую пози-
                    цию, которая определяется значением, получаемым
                    предшествующим вызовом функции fgetpos. fsetpos
                    также сбрасывает признак конца файла, но не ока-
                    зывает влияния на символы, помещаемые в поток
                    функцией ungetc. После вызова fsetpos можно про-
                    изводить как операции ввода, так и вывода.

 Возвращаемое       При успешном завершении fsetpos возвращает 0. При
 значение           возникновении ошибки она возвращает ненулевое
                    значение и устанавливает errno не равным 0.

 Переносимость      fsetpos поддерживается стандартом ANSI C.

 Смотрите также     fgetpos fseek ftell

 Пример:

 #include
 #include

 void showpos(FILE *stream);

 int main(void)
 {
    FILE *stream;
    fpos_t filepos;
    /* открыть файл для изменения */
    stream = fopen("DUMMY.FIL","w+");
    /* сохранить текущую позицию указателя */
    fgetpos(stream,&filepos);
    /* записать в файл данные */
    fprintf("stream,"Это тест");
    /* вывести текущую позицию */
    showpos(stream);
    /* установить новую позицию и вывести ее */
   if(fsetpos(stream,&filepos) == 0)
      showpos(stream);
    else
    {
      fpritf(stderr,"Ошибка указателя файла\n");
      exit(1);
    }
    /* закрыть файл */
    fclose(stream);
    return 0;
 }
 void showpos(FILE *stream)
 {
    fpos_t pos;
    /* вывести текущее положение указателя */
    fgetpos(stream,&pos);
    printf("Позиция указателя: %ld\n",pos);


cpp

fstat
 Функция            Получает информацию об открытом файле.

 Синтаксис          #include
                    int fstat(char * handle, struct stat * buff)

 Файл, содержащий   sys\stat.h
 прототип

 Описание           Функция fstat записывают информацию об открытом
                    файле (или директории), связанным с дескриптором
                    handle в структуру stat. Aргумент buff адресует
                    структуру stat (определенную в файле sys\stat.h).
                    Структура содержит следующие поля:

                    st_mode - битовая маска, дающая информацию о ре-
                              жиме открытия файла;

                    st_dev - идентификатор дисковода, на котором был
                             открыт файл, или номер handle, если файл
                             находится на устройстве;

                    st_rdev - так же, как и st_dev;

                    st_nlink - присваевается целая константа 1;

                    st_size - размер открытого файла в байтах;

                    st_atime - ближайшее время открытия файла, во
                               время которого он был модифицирован;

                    st_mtime - так же, как и st_atime;

                    st_ctime - так же, как и st_atime.

                    Структура stat содержит на три поля больше, чем
                    перечислено выше, они содержат данные, которые
                    под управлением DOS не имеют значения.

                    Битовая маска, дающая информацию о режиме откры-
                    того файла, содержит следующие биты:

                    Один из следующих битов должен быть установлен:

                    S_IFCHR - установлен, если параметр handle указы-
                              вает на устройство (fstat);

                    S_IFREG - установлен, если обычный файл определя-
                              ется параметром handle

                    Один или оба следующих бита должны быть установ-
                    лены:

                    S_IWRITE - установлен, если пользователь имеет
                               разрешение на запись;

                    S_IREAD - установлен, если пользователь имеет
                              разрешение на чтение.

                    Битовая маска также имеет биты чтения/записи, они
                    устанавливаются в соответствии с режимом доступа
                    к файлу.

 Возвращаемое       Если информация об открытом файле была успешно по-
 значение           лучена, функция возвращают значение 0. В случае
                    ошибки (невозможно получить информацию), функция
                    возвращает -1 и присваивают переменной errno:

                    EBADF - Неверный номер файла.

 Смотрите также     access chmod stat

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    struct stat statbuf;
    FILE *stream;
    /* открыть файл для изменения */
    if((stream = fopen("DUMMY.FIL","w+")) == NULL)
    {
       fprintf(stderr,"Не могу открыть файл.\n");
       return 1;
    }
    fprintf(stream,"Это тест");
    fflush(stream);
    /* получить информацию о файле */
    fstat(fileno(stream),&statbuf);
    /* вывести полученную информацию */
    if(statbuf.st_mode & S_IFCHR)
      printf("Это устройство\n");
    if(statbuf.st_mode & S_IFREG)
      printf("Это файл\n");
    if(statbuf.st_mode & S_IREAD)
      printf("Разрешение на чтение\n");
    if(statbuf.st_mode & S_IWRITE)
      printf("Разрешение на запись");
    printf("Метка диска:%c\n",'A'+statbuf.st_dev);
    printf("Размер в байтах: %ld\n",statbuf.st_size);
    printf("Время последнего открытия: %s\n",
            ctime(&statbuf.st_ctime));
    return 0;


cpp

ftell
 Функция            Возвращает положение указателя текущей позиции
                    файла.

 Синтаксис          #include
                    long int ftell(FILE *stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           ftell возвращает положение указателя текущей позиции
                    файла, связанного с потоком stream. Значение вы-
                    дается в виде смещения в байтах относительно на-
                    чала файла.

                    Значение, возвращаемое ftell, можно в дальнейшем
                    использовать при вызове функции fseek.

 Возвращаемое       ftell возвращает положение указателя текущей пози-
 значение           ции при успешном завершении. При ошибке возвращает
                    -1L, и присваивает переменной errno положительное
                    значение.

 Переносимость      ftell доступна на системах UNIX и поддерживается
                    стандартом ANSI C.

 Смотрите также     fgetpos fseek fsetpos lseek rewind tell

 Пример:

 #include

 int main(void)
 {
    FILE *stream;
    stream = fopen("DUMMY.FIL","w+");
    fprintf(stream,"Это тест");
    printf("Указатель файла: %ld\n",ftell(stream));
    return 0;


cpp

ftime
 Функция            Помещает текущее время в структуру типа timeb.

 Синтаксис          #include
                    void ftime(struct timeb *buf)

 Файл, содержащий   sys\timeb.h
 прототип

 Описание           ftime определяет текущее время и заполняет поля
                    структуры типа timeb, на которую указывает пара-
                    метр buf. Структура timeb определена следующим
                    образом:

                    struct timed {
                    long      time;
                    short     millitm;
                    short     timezone;
                    short     dstflag;
                    };

                    time - это поле содержит время в секундах с
                    00:00:00 1 января 1970 года по Гринвичскому мери-
                    диану.

                    millitm - содержит часть секунды в миллисекундах.

                    timezone - содержит разницу в минутах между вре-
                    менем по Гринвичу и местным временем. Это время
                    вычисляется по направлению на запад от Гринвичс-
                    кого меридиана. ftime определяет это время по со-
                    держимому глобальной переменной timezone, которая
                    устанавливается функцией tzset.

                    dstflag - равно 0, если летнее время не действу-
                    ет, и не 0, в противном случае. Это поле опреде-
                    ляется по глобальной переменной daylight (уста-
                    навливаемой функцией tzset).

                    Примечание. Т.к. функция ftime вызывает функцию
                    tzset, то вам нет необходимости это делать.

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

 Переносимость      Данная функция доступна в системе UNIX System V.

 Смотрите также     asctime ctime gmtime localtime stime time
                    tzset

 Пример:

 #include
 #include
 #include
 #include

 char *tzstr = "TZ=PST8PDT";

 int main(void)
 {
    struct timeb t;
    putenv(tzstr);
    tzset();

    ftime(&t);
    printf("%ld секунд с 1-1-70 по GMT\n",t.time);
    printf("плюс %d миллисекунд",t.millitm);
    printf("%d минут от GMT",t.timezone);
    printf("Летнее время %s действует",
                  t.dstflag ? "":"не");
    return 0;


cpp

fwrite
 Функция            Записывает данные в поток.

 Синтаксис          #include
                    size_t fwrite(void * ptr, size_t size,
                                       size_t n, FILE * stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           fwrite добавляет n элементов данных, каждое
                    величиной size байт в данный выходной поток. Дан-
                    ные записываются из ptr.

                    Общее число выведенных байт равно n*size.

                    ptr должен быть объявлен как указатель на некото-
                    рый объект.

 Возвращаемое       При успешном завершении fwrite возвращает число
 значение           выведенных элементов (не байт). При ошибке она
                    возвращает меньшее число.

 Переносимость      fwrite доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Смотрите также     fopen fread

 Пример:

 #include

 struct mystruct
 {
    int i;
    char ch;
 }
 int main(void)
 {
    FILE *stream;
    struct mystruct s;
    /* открыть файл TEST.$$$ */
    if((stream = fopen("TEST.$$$","wb"))==NULL)
    {
       fprintf(stderr,"не могу открыть файл\n");
       return 0;
    }
    s.i = 0;
    s.ch = 'A';
    /* вывод в файл */
    fwrite(&s,sizeof(s),1,stream);
    fclose(stream);
    return 0;


cpp

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

 Синтаксис          #include
                    char * gcvt(double value, int ndig, char *buf);

 Файл, содержащий   stdlib.h
 прототип

 Описание           gcvt преобразует value в строку символов в коде
                    ASCII, ограниченную нулем, и запоминает строку в
                    buf. Если возможно, то она получает ndig значащих
                    цифр в формате F Фортрана. В противном случае
                    строка будет в формате E функции printf (ее сразу
                    же можно печатать). Она может подавлять задние ну-
                    ли.

 Возвращаемое       gcvt возвращает адрес строки.
 значение

 Переносимость      gvct поддерживается системой UNIX. Она не опреде-
                    лена в стандарте ANSI C, и поэтому мы не рекомен-
                    дуем использовать ее для переносимых программ.

 Смотрите также     ecvt fcvt

 Пример:

 #include
 #include

 int main(void)
 {
    char str[25];
    double num;
    sig = 5;

    num = 9.876;
    gcvt(num,sig,str);
    printf("Строка = %s\n",str);
    num = -123.45;
    gcvt(num,sig,str);
    printf("Строка = %s\n",str);
    num = 0.6789e5;
    gcvt(num,sig,str);
    printf("Строка = %s\n",str);
    return 0;


cpp

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

 Синтаксис          #include
                    void geninterrupt(int intr_num);

 Файл, содержащий   dos.h
 прототип

 Описание           Эта макрокоманда вызывает программное прерывание
                    с номером, определяемым intr_num. Состояние регис-
                    тров после вызова прерывания зависит от программы
                    обработки этого прерывания.

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

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

 Переносимость      geninterrupt уникальна для 8086.

 Смотрите также     bdos bdosptr disable enable getvect int6,
                    int6x intdos intr

 Пример:

 #include
 #include

 void writechar(char ch);

 int main(void)
 {
    clrscr();
    gotoxy(80,25);
    writechar("*");
    getch();
    return 0;
 }
 /* Вывод символа в текущую позицию курсора */
 /* использование функции BIOS для прокрутки экрана */
 /* при выводе в позицию 80,25 */

 void writechar(char ch)
 {
    struct text_info ti;
    gettextinfo(&ti);  /* получить текущие установки */
    _AH = 9;  /* прерывание 10H, подфункция 9 */
    _AL = ch; /* выводимый символ */
    _BH = 0;  /* страница */
    _BL = ti.attribute /* атрибуты */
    _CX = 1;  /* фактор повторения */
    geninterrupt(0x10); /* вывод символа */


cpp

getarccoords
 Функция            Выдает координаты последнего обращения к функции
                    arc.

 Синтаксис          #include
                    void far getarccoords(struct arccoordstype
                                           far *arccoords);

 Файл, содержащий   graphics.h
 прототип

 Описание           getarccoords заполняет структуру arccoords-
                    type, на которую указывает arccoords, информацией
                    о последнем вызове arc. Структура arccordstype оп-
                    ределена в graphics.h следующим образом:

                    struct arccoordstype{
                           int x, y;
                           int xstart, ystart, xend, yend;
                        };

                    Элементы этой структуры используются для определе-
                    ния центра (x,y),начальной (xstart, ystart) и ко-
                    нечной (xend,yend) позиций дуги.Эти значения могут
                    быть использованы если необходимо , чтобы линии
                    пересекались на конце дуги.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ними,
                    оснащенных дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотрите также     arc fillellipse sector

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 struct srccoordstype arcinfo;
 int midx,midy;
 int stangle = 45,endangle = 270;
 char sstr[80],estr[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));

 /* рисует дугу */
 arc(midx,midy,stangle,endangle,100);
 getarccoords((&arcinfo);

 /* преобразование информации в строки */
 sprintf(sstr,"*- (%d, %d)",arcinfo.xstart,arcinfo.ystart);
 sprintf(sstr,"*- (%d, %d)",arcinfo.xend,arcinfo.yend);
 /* вывести информацию на экран */
 outtextxy(arcinfo.xstart,arcinfo.ystart,estr);
 outtextxy(arcinfo.xend,arcinfo.xend,estr);

 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getaspectratio
 Функция            Возвращает текущее характеристическое отношение
                    (отношение ширины изображения к его высоте) графи-
                    ческого режима.

 Синтаксис          #include
                    void far getaspectratio( int far *xasp,
                                              int far *yasp);

 Файл, содержащий   graphics.h
 прототип

 Описание           Фактор y-аспекта, *yasp, нормализуется к
                    10 000; на всех графических адаптерах, кроме VGA,
                    *xasp ( фактор y-аспекта) меньше *yasp, т.к. пик-
                    сел больше в высоту,чем в ширину.На VGA,который
                    имеет "квадратный" пиксел, *xasp равно *yasp. В
                    целом, соотношение между *yasp и *xasp следующее:

                             *yasp = 10000
                             *xasp <= 10000

                    getaspectratio передает значения в *xasp и *yasp.

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

 Переносимость      Такая же функция существует в Turbo Pascal 4.0

 Смотрите также     arc circle ellipse fillellipse pie
                    slices sector setaspectratio

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int xasp,yasp,midx,midy;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));

 /* получить текущее характеристическое отношение */
 getaspectratio(&xasp,&yasp);

 /* нарисовать нормальную окружность */
 circle(midx,midy,100);
 getch();

 /* нарисовать окружность, вытянутую в ширину */
 cleardevice();
 setaspectratio(xasp/2,yasp);
 circle(midx,midy,100);
 getch();

 /* нарисовать окружность, вытянутую в длину */
 cleardevice();
 setaspectratio(xasp,yasp/2);
 circle(midx,midy,100);
 getch();

 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getbkcolor
 Функция            Возвращает текущий цвет фона.

 Синтаксис          #include
                    int far getbkcolor(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getbkcolor возвращает текущий цвет фона.
                    (cмотри подробности в таблице под setbkcolor.)

 Возвращаемое       getbkcolor возвращает текущий цвет фона.
 значение

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ними,
                    оснащенных дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотрите также     getcolor getmaxcolor getpalette setbcolor

 Пример:

 #include
 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int bkcolor,midx,midy;
 char bkname[35];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));
 /* установить центрирование текста */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 /* получить текущий цвет фона */
 bkcolor = getbkcolor();
 /* преобразовать его в строку */
 itoa(bkcolor,bkname,10);
 strcat(bkname," - это текущий цвет фона");
 /* вывести сообщение */
 outtext(midx,midy,bkname);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getc
 Функция            Вводит из потока символ.

 Синтаксис          #include
                    int getc(FILE *stream);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция getc представляет собой макрокоманду, ко-
                    торая получает следующий по порядку символ из
                    входного потока stream и увеличивает указатель те-
                    кущего положения в потоке на 1.

 Возвращаемое       При успешном завершении функция getc возвращает
                    считанный символ после предварительного преобразо-
                    вания его в целое без расширения знака. При воз-
                    никновении ситуации EOF или при ошибке она возвра-
                    щает EOF.

 Переносимость      Функция поддерживаются на системах UNIX, описаны
                    Керниганом и Ритчи. Поддерживаются стандартом ANSI
                    C.

 Смотрите также     fdetc getch getchar getche gets putc putchar
                    ungetc

 Пример:

 #include

 int main(void)
 {
    char ch;
    printf("Введите символ :");
    /* ввести символ из стандартного входного потока stdin */
    ch = getc(stdin);
    printf("Был введен символ '%c'\n",ch);
    return 0;


cpp

getcbrk
 Функция            Получает параметры контроля над прерыванием по
                    Ctrl_Break.

 Синтаксис          #include
                    int getcbrk(void);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getcbrk использует системный вызов MS-DOS
                    0x33 для получения текущих параметров контроля над
                    прерыванем Ctrl_Break.

 Возвращаемое       Функция getcbrk возвращает 0 если контроль над
 значение           прерываниями выключен (off), и 1, если контроль
                    включен (on).

 Переносимость      Функция уникальна для DOS.

 Смотрите также     ctrlbrk setcbrk

 Пример:

 #include
 #include

 int main(void)
 {
    if(getcbrk())
      printf("Флаг Ctrl-Break включен\n");
    else
      printf("Флаг Ctrl-Break выключен\n");
    return 0;


cpp

getch
 Функция            Вводит символ с консоли без эхопечати.

 Синтаксис          #include
                    int getch(void);

 Файл, содержащий   conio.h
 прототип

 Описание           Функция getch читает один символ, непосредственно
                    с консоли, без вывода его на экран.

 Возвращаемое       getch возвращает введенный с клавиатуры символ.
 значение

 Переносимость      Функция уникальна для DOS.

 Смотрите также     cgets cscanf fdetc getc getchar getche getpass
                    kbhit putch ungetc

 Пример:

 #include
 #include

 int main(void)
 {
    int c;
    int extended = 0;
    c = getch();
    if(!c)
      extended = getch();
    if(extended)
      printf("Расширенный символ\n");
    else
      printf("Не расширенный символ\n");
    return 0;


cpp

getchar
 Функция            Вводит символ из потока stdin.

 Синтаксис          #include
                    int getchar(void);

 Файл, содержащий   stdio.h
 прототип

 Описание           getchar - это макрокоманда, вводящая сим-
                    вол из потока stdin. Она определена следующим об-
                    разом: getc(stdin).

 Возвращаемое       При успешном завершении функция getchar возвращает
 значение           считанный символ после предварительного преобразо-
                    вания его в целое без расширения знака. При воз-
                    никновении ситуации EOF или при ошибке она возвра-
                    щает EOF.

 Переносимость      Функция поддерживается на системах UNIX, описана
                    Керниганом и Ритчи. Поддерживается стандартом ANSI
                    C.

 Смотрите также     fdetc fgetchar getch getche gets putc
                    putchar scanf ungetc

 Пример:

 #include

 int main(void)
 {
    char c;
    /* Замечание. getchar читает символы с stdin, который имеет
       буфер на одну строку. Поэтому она ничего не возвращает до
       тех пор, пока вы не нажмете Enter */
    while((c=getchar())!='\n')
      printf("%c",c);
    return 0;


cpp

getche
 Функция            Вводит символ с консоли и отображает его на
                    экране.

 Синтаксис          #include
                    int getche(void);

 Файл, содержащий   conio.h
 прототип

 Описание           Функция getche считывает один символ с консоли и
                    одновременно отображает его в текущем текстовом
                    окне на экране, использую напрямую видео-память
                    или BIOS.

 Возвращаемое       getche возвращает символ, введенный с клавиатуры.
 значение

 Переносимость      getche уникальна для DOS.

 Смотрите также     cgets cscanf fdetc getc getch getchar kbhit
                    putch ungetc

 Пример:

 #include

 int main(void)
 {
    char ch;
    printf("Введите символ:");
    ch = getche();
    printf("\n Вы ввели символ '%c'\n",ch);
    return 0;


cpp

getcolor
 Функция            Возвращает текущий цвет рисунка.

 Синтаксис          #include
                    int far getcolor(void);

 Файл, содержащий    graphics.h
 прототип

 Описание            getcolor возвращает текущий цвет рисунка.
                     Цвет рисования - это значение в которое устанав-
                     ливаются пикселы, когда рисуются линии и т.д.
                     Например, в режиме CGACO, палитра содержит 4 цве-
                     та : цвет фона, светло зеленый, светло красный и
                     желтый. В этом режиме, если getcolor возвращает
                     1, текущий цвет рисования - светло-зеленый.

 Возвращаемое        getcolor возвращает текущий цвет рисования.
 значение

 Переносимость       Функция уникальна для Turbo C++. Она работает
                     только на компьютерах IBM PC и совместимых с ни-
                     ми, оснащенных дисплейными адаптерами, поддержи-
                     вающими графический режим.

 Смотрите также      getbkcolor getmaxcolor getpalette setcolor

 Пример:

 #include
 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int color,midx,midy;
 char colname[35];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 setcolor(getmaxcolor(1));
 /* установить центрирование текста */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 /* получить текущий цвет фона */
 color = getcolor();
 /* преобразовать его в строку */
 itoa(color,colname,10);
 strcat(colname," - это текущий цвет рисования");
 /* вывести сообщение */
 outtext(midx,midy,colname);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getcurdir
 Функция            Получает текущую директорию для указанного
                    устройства.

 Синтаксис          #include
                    int getcurdir(int drive, char * direc);

 Файл, содержащий   dir.h
 прототип

 Описание           Функция getcurdir получает имя текущей директо-
                    рии для указанного устройства drive.

                    Параметр drive содержит номер устройства (0= по
                    умолчанию, 1=A, и т.д.)

                    Параметр direc указывает на область памяти длиной
                    MAXDIR, где хранится имя директории. Имя директо-
                    рии - символьная строка с нулевым окончанием- не
                    содержит спецификации устройства и не начинается
                    на обратный слэш (\).

 Возвращаемое       Функция getcurdir возвращает 0 при успешном завер-
 значение           шении и -1 при возникновении ошибки.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     chdir getcwd getdisk mkdir rmdir

                                    getcwd

 Функция            Получает текущую рабочую директорию.

 Синтаксис          #include
                    char * getcwd(char * buf, int buflen);

 Файл, содержащий   dir.h
 прототип

 Описание           Функция getcwd получает полное имя маршрута для
                    текущей рабочей директории (cwd), включая специ-
                    фикацию устройства, до buflen байтов длиной и за-
                    поминает его в переменной buf. Если длина полного
                    имени маршрута (включая нулевое окончание) длин-
                    нее buflen, вырабатывается ошибка.

                    Если параметр buf имеет значение NULL, буфер дли-
                    ной n байтов будет выделен вам с помощью malloc.
                    Затем вы можете освободить выделенный буфер, пе-
                    редав значение, полученное функцией getcwd - фун-
                    кции free.

 Возвращаемое       Функция getcwd возвращает параметр buf, в случае
 значение           ошибки возвращается значение NULL.

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

                    ENODEV - нет такого устройства;
                    ENOMEM - не хватает памяти;
                    ERANGE - результат превышает допустимый порог.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     chdir getcurdir getdisk mkdir rmdir

 Пример:

 #include
 #include

 int main(void)
 {
    char buffer[MAXPATH];
    getcwd(buffer,MAXPATH);
    printf("Текущая директория: %s\n",buffer);
    return 0;


cpp

getdate
 Функция            Получает системную дату.

 Синтаксис          #include
                    void getdate(struct date * datep);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getdate заполняет структуру date (с
                    указателем datep) системной информацией о текущей
                    дате.

                    Структура date определяется следующим образом:

                    struct date {
                       int da_year;   /* текущий год */
                       char da_day;   /* день месяца */
                       char da_mon;   /* месяц (1= янв.) */
                    };

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

 Переносимость      Функция уникальна для DOS.

 Смотрите также     ctime gettime setdate settime

 Пример:

 #include
 #include

 int main(void)
 {
    struct date d;
    getdate(&d);
    printf("Год :%d\n",d.da_year);
    printf("Месяц:%d\n",d.da_mon);
    printf("День:%d\n",d.da_day);
    return 0;


cpp

getdefaultplatte
 Функция            Возвращает структуру определения палитры.

 Синтаксис          #include
                    struct palettetype *far getdefaultpalette(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getdefaultpalette находит структуру
                    palettetype, которая содержит палитру, первона-
                    чально установленную драйвером во время выполне-
                    ния initgraph.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getpalette initgraph

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 /* указатель на структуру описания политры */
 struct palettetype far *ptr = NULL;
 int i;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 /* получить указатель на структуру */
 ptr = getdefaultpalette();
 for(i=0;isize;i++);
 {
    printf("цвета[%d] = %d\n",i,ptr->colors[i]);
    getch();
 }
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getdfree
 Функция            Получает информацию о наличии свободного места
                    на диске.

 Синтаксис          #include
                    void getdfree(unsigned char drive,
                                    struct dfree *dtable);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getdfree просматривает устройство, задава-
                    емое параметром drive (0= по умолчанию, 1=A, и т.
                    д.) и заполняет структуру dfree с адресным указа-
                    телем dtable характеристиками соответствующего
                    диска.

                    Структура dfree описывается следующим образом:

                    struct dfree {
                       unsigned df_avail; /* свободные кластеры */
                       unsigned df_total; /* общее количество клас-
                                             теров */
                       unsigned df_bsec;  /* байтов на сектор */
                       unsigned df_sclus; /* секторов на кластер */
                    };

 Возвращаемое       Функция getdfree не возвращает никакого значения.
 значение           В случае ошибки параметру df_sclus в структуре
                    dfree присваивается значение 0xFFFF.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     getfat getfatd

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
    struct dfree free;
    long avail;
    int drive;
    drive = getdisk();
    getdfree(dreve+1,&free);
    if(free.df_clus == 0xFFFF)
    {
       printf("Ошибка getdfree\n");
       exit(1);
    }
    avail = (long) free.df_avail * (long) free.df_bsec *
            (long) free.df_sclus;
    printf("На диске %c имеется %ld свободных байт\n",'A'+drive,avail);
    return 0;


cpp

getdisk
 Функция            Получает номер текущего устройства.

 Синтаксис          #include
                    int getdisk(void);

 Файл, содержащий   dir.h
 прототип

 Описание           Функция getdisk получает номер текущего устройства
                    и возвращает целое число : 0=A:; 1=B:; 2=C:; и
                    т.д. (эквивалентна системному вызову DOS 0x19).

 Возвращаемое       Функция getdisk возвращает номер текущего
 значение           устройства.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     getcurdir setdisk getcwd

 Пример:

 #include
 #include

 int main(void)
 {
    int disk;
    disk = getdisk()+'A';
    printf("Текущий дисковод: %c\n",disk);
    return 0;


cpp

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

 Синтаксис          #include
                    char *far getdrivername(void)

 Файл, содержащий   graphics.h
 прототип

 Описание           После вызова initgraph, getdrivername  воз-
                    вращает имя драйвера, который загружен в данный
                    момент.

 Возвращаемое       getdrivername возвращает указатель на стро-
 значение           ку, которая содержит имя текущего драйвера.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     initgraph

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 /* указатель на имя драйвера */
 char *drivername;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 setcolor(getmaxcolor());
 /* получить имя текущего используемого драйвера */
 drivername = getdrivername();
 /* установить выравнивание текста */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 /* вывести имя драйвера */
 outtextxy(getmaxx()/2,getmaxy()/2,drivername);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getdta
 Функция            Получает адрес DTA (область связи с диском).

 Синтаксис          #include
                    char far * getdta(void);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getdta возвращает текущее значение адреса
                    DTA. В малых и средних моделях памяти предполага-
                    ется, что сегментом является текущий сегмент дан-
                    ных. Если вы используете исключительно язык CИ,
                    то эта ситуация сохраняется, если же вы будете
                    использовать подпрограммы на Ассемблере, адрес
                    DTA может оказаться в любом месте.

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

 Возвращаемое       Функция getdta возвращает "дальний" указатель на
 значение           текущую DTA.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     fcb(структура), setdta

 Пример:

 #include
 #include

 int main(void)
 {
    char far *dta;
    dta = getdta();
    printf("Адрес области связи с диском: %Fp\n",dta);
    return 0;


cpp

getenv
 Функция            Получает символьную строку, содержащую
                    параметры операционной среды.

 Синтаксис          #include
                    char *getenv(const char *name);

 Файл, содержащий   stdlib.h
 прототип

 Описание           Функция getenv возвращает значение указанной пере-
                    менной операционной среды. Имя переменной может
                    быть задано символами как верхнего так и нижнего
                    регистра, но оно должно включать символ равно
                    (=). Если указанная переменная не определена, то
                    функция возвращает пустую строку.

 Возвращаемое       При успешном завершении функция getenv возвращает
 значение           указатель на значение, соответствующее name.
                    Если заданная переменная name не определена, фун-
                    кция getenv возвращает пустую строку.

                    Примечание. Элементы окружения нельзя изменять
                    непосредственно. Если вы хотите изменить значение
                    переменной окружения, необходимо воспользоваться
                    функцией putenv.

 Переносимость      Функции поддерживаются на системах UNIX и стандар-
                    том ANSI C.

 Смотрите также     environvariable, getpsp putenv

 Пример:

 #include
 #include

 int main(void)
 {
    char *s;
    s = getenv("COMSPEC"); /* получить параметр среды */
    printf("Командный процессор находится: %s\n",s);
    return 0;


cpp

getfat
 Функция            Получает информацию из таблицы размещения файлов
                    указанного дисковода.

 Синтаксис          #include
                    void getfat(unsigned char drive,
                                           struct fatinfo *dtable);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getfat возвращает информацию из таблицы
                    размещения файлов согласно спецификации устройст-
                    ва, заданной в параметре drive(0 = по умолчанию,
                    1=A:; 2=B:; и т.д.). Указатель dtable является
                    адресом структуры fatinfo, которая заполняется
                    информацией из таблицы.

                    Структура fatinfo, заполняемая функцией getfat
                    описывается следующим образом:

                    struct fatinfo {
                       char fi_sclus;  /* секторов на кластер */
                       char fi_fatid;  /* байт идентификации таблицы
                                       FAT (таблицы размещения файлов)
                    int fi_nclus;      /* количество кластеров */
                    int fi_busec;      /* количество байтов в секто-
                                          ре */
                    };

 Возвращаемое       Отсутствует.
 значение

 Переносимость      Функция уникальна для DOS.

 Смотрите также     getdfree getfatd

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    struct fatinfo diskinfo;
    int flag = 0;
    printf("Вставте дискету в дисковод 'A'\n");
    getch();
    getfat(1,&diskinfo); /* получение инф-ции о дисководе */
    printf("Дисковод A:");
    switch((unsigned char)diskinfo.fatid)
    {
    case 0xFD: printf("360 Кбайт, одинарной плотности\n");
               break;
    case 0xF9: printf("5 1/4'' - 1.2 Mбайт или 3 1/2''- 720 Кбайт");
               break;
    case 0xF0: printf("3 1/2 - 1.44Мбайт\n");
               break;
    default:   printf("Неформатирован\n");
               flag = 1;
    }
    if(!flag)
    {
       printf("Секторов на кластер: %5d\n",diskinfo.fi_sclus);
       printf("Количество кластеров: %5d\n",diskinfo.fi_nclus);
       printf("Байт на сектор: %5d\n",diskinfo.fi_bysec);
    }
    return 0;


cpp

getfatd
 Функция            Получает информацию из таблицы размещения файлов.

 Синтаксис          #include
                    void getfatd(struct fatinfo *dtable);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getfatd возвращает информацию из таблицы
                    размещения файлов дисковода, используемого по
                    умолчанию. Указатель dtable является адресом
                    структуры fatinfo, которая заполняется информаци-
                    ей из таблицы.

                    Структура fatinfo, заполняемая функцией getfat,
                    описывается следующим образом:

                    struct fatinfo {
                       char fi_sclus;  /* секторов на кластер */
                       char fi_fatid;  /* байт идентификации таблицы
                                       FAT (таблицы размещения файлов)
                    int fi_nclus;      /* количество кластеров */
                    int fi_busec;      /* количество байтов в секто-
                                          ре */
                    };

 Возвращаемое       Отсутствует.
 значение

 Переносимость      Функция уникальна для DOS.

 Смотрите также     getdfree getfat

 Пример:

 #include
 #include

 int main(void)
 {
    struct fatinfo diskoinfo;
    getfatd(&diskinfo); /* получить информацию о дисководе */
    printf("Дисковод по умолчанию:");
    printf("Секторов на кластер: %5d\n",diskinfo.fi_sclus);
    printf("байт FAT ID: %5X\n",diskinfo.fi_fatid & 0xFF);
    printf("Количество кластеров: %5d\n",diskinfo.fi_nclus);
    printf("Байт на сектор: %5d\n",diskinfo.fi_bysec);
    return 0;


cpp

getfillpattern
 Функция            Копирует  в память определенный пользователем
                    шаблон заполнения.

 Синтаксис          #include
                    void far getfillpattern(char far *pattern);

 Файл, содержащий   graphics.h
 прототип

 Описание           getfillpattern копирует шаблон заполнеия,
                    определенный пользователем и установленный с по-
                    мощью setfillpattern, в 8-битную область, на ко-
                    торую указывает pattern. pattern - это указатель
                    на последовательность из 8 байт, где каждый байт
                    соответствует 8 пикселям шаблона. Всякий раз,
                    когда бит устанавливается в 1, соответствующий
                    пиксель отображается на экране. Например, следую-
                    щий определенный пользователем образец приведет к
                    поклеточному рисунку:

                    char checkboard[8] = {
                           0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55,
                           0xAA, 0x55
                          };

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getfillsettings setfillpattern

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int maxx,maxy;
 char pattern[8] = {0x00,0x70,0x20,0x27,0x25,0x27,0x04,0x04);

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 maxy = getmaxy();
 setcolor(getmaxcolor());
 /* выбрать пользовательский шаблон */
 setfillpattern(pattern,getmaxcolor());
 /* заполнить экран с помощью этого шаблона */
 bar (0,0,maxx,maxy);
 getch();
 /* получить текущий шаблон */
 getfillpattern(pattern);
 /* изменить его */
 pattern[4] -= 1;
 pattern[5] -= 2;
 pattern[6] -= 3;
 pattern[7] -= 4;
 /* установить новый шаблон */
 setfillpattern(pattern,getmaxcolor());
 /* заполнить им экран */
 bar(0,0,maxx,maxy);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getfillsettings
 Функция            Получает информацию о текущем шаблоне и
                    цвете заполнения.

 Синтаксис          #include
                    void far getfillsettings(struct
                              fillsettingstype far *fillinfo);

 Файл, содержащий   graphics.h
 прототип

 Описание           getfillsettings заполняет структуру
                    fillsettingstype, на которую указывает fillinfo
                    информацией о текущем шаблоне и цвете заполнения.
                    fillsettingstype определяется в graphics.h следу-
                    ющим образом:

                    struct fillsettingstype{
                     int pattern; /* текущий шаблон заполнения */
                     int color;   /* текущий цвет заполнения */
                    };

                    Функции bar, bar3d, fillpoly, floodfill и
                    pieslice целиком заполняют область текущим шабло-
                    ном заполнения в текущем цвете заполнения. Сущес-
                    твует 11 видов шаблонов заполнения (сплошное,
                    крестообразное, точечное и т. д.) Символические
                    имена для встроенных шаблонов обеспечиваются пе-
                    речисляемым типом fill_patterns в graphics.h.
                    (смотри таблицу, приведенную ниже). Кроме этого,
                    вы можете определить свои собственные шаблоны.

                    Если pattern равен 12 (USER_FILL), то в данное
                    время используется шаблон, определяемый пользова-
                    телем; в противном случае pattern задает номер
                    встроенного шаблона. Перечисляемый тип
                    fill_patterns, заданный в graphics.h задает имя
                    встроенного шаблона заполнения и индикатор для
                    шаблона, определяемого пользователем.

 имя             значение            описание

   EMPTY_FILL          0        заполнение цветом фона
   SOLID_FILL          1        сплошное заполнение цветом
                                заполнения
   LINE_FILL           2        заполнение ______
   LSTLASH_FILL        3        заполнение //////
   SLASH_FILL          4        заполнение /// толстой линией
   BKSLASH_FILL        5        заполнение \\\ толстой линией
   LTBKSLASH_FILL      6        заполнение \\\\
   HATCH_FILL          7        светлая штриховка сеткой
   XHATCH_FILL         8        крестообразная штриховка
   INTERLEAVE_FILL     9        тканеобразная штриховка
   WIDE_DOT_FILL       10       заполнение редкими точками
   CLOSE_DOT_FILL      11       заполнение частыми точками
   USER_FILL           12       шаблон заполнения, определяемый
                                пользователем

                    Все, кроме EMPTY_FILL заполняют текущим цветом
                    заполнения; EMPTY_FILL использует текущий цвет
                    фона.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getfillpattern setfillpattern setfillstyle

 Пример:

 #include
 #include
 #include
 #include

 /* имена поддерживаемых типов заполнения */
 char *fname[] = {"EMPTY_FILL",
                  "SOLID_FILL",
                  "LINE_FILL",
                  "LSTLASH_FILL",
                  "SLASH_FILL",
                  "BKSLASH_FILL",
                  "LTBKSLASH_FILL",
                  "HATCH_FILL",
                  "XHATCH_FILL",
                  "INTERLEAVE_FILL",
                  "WIDE_DOT_FILL",
                  "CLOSE_DOT_FILL",
                  "USER_FILL"
                 };

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 struct fillsettingstype fillinfo;
 int maxx,maxy;
 char patstr[40],colstr[40];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx()/2;
 maxy = getmaxy()/2;
 /* получить информацию о текущем шаблоне и цвете */
 getfillsettings(*fillinfo);
 /* преобразовать в строку */
 sprintf(patstr,"Тип заполнения :%s.",fname[fillinfo.pattern]);
 sprintf(colstr,"Цвет :%d",fillinfo.color);
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,patstr);
 outtextxy(midx,midy+2*textheight("W"),colstr);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getftime
 Функция            Получает дату и время создания или последней
                    модификации файла.

 Синтаксис          #include
                    int getftime(int handle, struct ftime * ftimep);

 Файл, содержащий   io.h
 прототип

 Описание           Функция getftime выдает время и дату создания для
                    файла, соответствующего параметру handle, полу-
                    ченному при открытии файла. Структура ftime с ад-
                    ресным указателем ftimep заполняется данными о
                    времени создания файла.

                    Структура ftime описывается следующим образом:

                    struct ftime {
                       unsigned ft_tsec:5;  /* две секунды */
                       unsigned ft_min:6;   /* минуты */
                       unsigned ft_hour:5;  /* часы */
                       unsigned ft_day:5;   /* день */
                       unsigned ft_month:4; /* месяц */
                       unsigned ft_year:7;  /* год-1980 */
                    }

 Возвращаемое       При успешном завершении возвращает 0. Если произошла
 значение           ошибка, возвращается значение -1 и глобальной пере-
                    менной errno присваивается значение одной из сле-
                    дующих констант:

                    EINVFNC - Неверный номер функции.
                    EBADF   - Неверный номер файла.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     open setftime

 Пример:

 #include
 #include

 int main()
 {
    FILE *stream;
    struct ftime ft;
    if((stream = fopen("TEST.$$$","wt"))== NULL)
    {
       fprintf(stderr,"Не могу открыть файл\n");
       return 1;
    }
    getftime(fileno(stream),&ft);
    printf("Время модификации файла:%02u:%02u,%02u\n",
             ft.ft_hour,ft.ft_min,ft.ft_tsec/2);
    printf("Дата: %02u%02u%04u\n",ft.ft_month,ft.ft_day,
             ft.ft_year+1980);
    return 0;


cpp

getgraphmode
 Функция            Возвращает текущий графический режим.

 Синтаксис          #include
                    int far getgraphmode(void)

 Файл, содержащий   graphics.h
 прототип

 Описание           Ваша программа должна успешно выполнить
                    вызов initgraph до вызова getgraphmode. Перечис-
                    ляемый тип graphics_mode, определенный в
                    graphics.h задает имена встроенных графических
                    режимов. Для ознакомления с таблицей,отображающей
                    эти значения, следует обратиться к описанию
                    initgraph.

 Возвращаемое       getgraphmode возвращает графический режим,
 значение           установленный integraph или setgraphmode.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getmoderange restorecrtmode setgraphmode

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy,mode;
 char numname[80],modename[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* получить код режима */
 mode = getgraphmode();
 sprintf(numname,"Номер режима: %d",mode);
 sprintf(modename,"Текущий графический режим: %s\n",getmodename(mode));
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,numname);
 outtextxy(midx,midy+2*textheight("W"),modename);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getimage
 Функция            Запоминает в битовый образ некоторой области эк-
                    рана.

 Синтаксис          #include
                    void far getimage(int left, int top, int
                                       right,int bottom, void
                                       far *bitmap);

 Файл, содержащий   graphics.h
 прототип

 Описание           getimage копирует образ c экрана в память.
                    left, top, right и bottom определяют область эк-
                    рана прямоугольной формы, которая будет скопиро-
                    вана. bitmap указывает на область в памяти, куда
                    записывается битовый образ. Первые два слова этой
                    области задают ширину и высоту прямоугольника,
                    оставшиеся определяют сам образ.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     imagesize putimage putpixel

 Пример:

 #include
 #include
 #include
 #include
 #include

 void save_screen(void far *buf[4]);
 void restore_screen(void far *buf[4]);
 int maxx,maxy;

 int main(void)
 {
 int graphdriver = DETECT, gmode, errorcode;
 void far *ptr[4];

 /* автоматическое определение драйвера и режима */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 maxy = getmaxy();
 /* нарисовать на экране изображение */
 rectangle(0,0,maxx,maxy);
 line(0,0,maxx,maxy);
 line(0,maxx,maxy,0)
 save_screen(ptr);        /* сохранить экран */
 getch();                 /* пауза */
 cleardevice();           /* обнуление экрана */
 restore_screen(ptr);     /* восстановление экрана */
 getch();                 /* пауза */

 closegraph();
 return 0;
 }

 void save_screen(void far *buf[4])
 {
    unsigned size;
    int ystart=0,yend,yincr,block;
    yincr = (maxy+1)/4;
    yend = yincr;
    size = imagesize(0,ystart,maxx,yend); /* получить размер изо-
                                             браженияв байтах */
    for(block = 0; block<=3; block++)
    {
       if(buf[block] = farmalloc(size))== NULL)
       {
          closegraph();
          printf("Ошибка! Не хватает памяти для сохранения экрана\n");
          exit(1);
       }
    getimage(0,ystart,maxx,yend,buf[block]);
    ystart = yend+1;
    yend += yincr+1;
    }
 }
 void restore_screen(void far *buf[4]);
 {
    int ystart=0,yend,yincr,block;
    yincr = (maxx+1)/4;
    yend = yincr;
    for(block=0;block<=3;block++)
    {
       putimage(0,ystart,buf[block],COPY_PUT);
       farfree(buf[block]);
       ystart = yend+1;
       yend += yincr+1;


cpp

getlinesttings
 Функция            Получает текущий цвет линии, шаблон и толщину.

 Синтаксис          #include
                    void far getlinesettings(struct linesettingstype
                                                  far *lineinfo);

 Файл, содержащий   graphics.h
 прототип

 Описание           getlinesettings заполняет структуру linesettings,
                    на которую указывает параметр lineinfo информаци-
                    ей, о текущем типе линий, толщине и шаблоне.

                    Структура linesettingstype определена в
                    graphics.h следующим образом:

                        struct linesettingstype{
                           int linestyle;
                           unsigned upattern;
                           int thickness;
                        };

                    linestyle определяет тип линий, который будет ис-
                    пользоваться ( непрерывная, пунктир, штрихпунк-
                    тир, штриховая). Перечисляемый тип line_styles,
                    определенный в graphics.h, дает символические
                    имена этим операциям:

                     -------------------------------------------
                      Название      Знач.       Описание
                     -------------------------------------------
                     SOLID_LINE        0     сплошная
                     DOTTED_LINE       1     пунктир
                     CENTER_LINE       2     штрихпунктир
                     DASHED_LINE       3     штриховая
                     USERBIT_LINE      4     тип линии, заданный
                                             пользователем
                     -------------------------------------------

                    thickness определяет, будут ли последующие линии
                    тонкими или толстыми.

                    -------------------------------------------
                      Название      Знач.       Описание
                    -------------------------------------------
                     NORM_WIDTH        1     толшина в 1 пиксель
                     THICK_WIDTH       3     толщина в 3 пикселя
                    --------------------------------------------

                    upattern -это 16-битный шаблон, который использу-
                    ется, только когда linestyle равен USERBIT_LINE
                    (4). В этом случае каждый бит в шаблоне, установ-
                    ленный в 1, соответствует пикселю на линии в те-
                    кущем цвете. Например, сплошной линии соответстс-
                    вует upattern равный 0xFFFF ( рисуются все пиксе-
                    ли), а пунктиру соответствует upattern, равный
                    0x3333 или 0x0F0F. Если же параметр linestyle в
                    setlynestyle не равен USERBIT_LINE (!=4), то
                    upattern поддерживается, но игнорируется.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     setlinestyle

 Пример:

 #include
 #include
 #include
 #include

 /* имена поддерживаемых типов линий */
 char lname[] = {"SOLID_LINE",
                 "DOTTED_LINE",
                 "CENTER_LINE",
                 "DASHED_LINE",
                 "USERBIT_LINE"
                 };

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 struct linrsettingstype lineinfo;
 int midx,midy;
 char lstyle[80],lpattern[80],lwigth[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* получить информацию о типе линии */
 getlinesettings(&lineinfo);
 /* преобразовать в строки */
 sprintf(lstyle,"Тип линии: %s\n",lname[lineinfo.linestyle]);
 sprintf(lpattern,"Шаблон определяемый пользователем: 0x%F",
         lineinfo.upattern);
 sprintf(lwigth,"Толщина линии: %d\n",lineinfo.thickness);

 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,lstyle);
 outtextxy(midx,midy+2*textheight("W"),lpattern);
 outtextxy(midx,midy+4*textheight("W"),lwigth);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getmaxcolor
 Функция            Возвращает максимальное значение цвета, которое
                    может быть передано функции setcolor.

 Синтаксис          #include
                    int far getmaxcolor(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getmaxcolor возвращает наивысшее действи-
                    тельное значение цвета для текущего графического
                    драйвера и режим,который может быть передан
                    setcolor.

                    Например, c 256K EGA, getmaxcolor будет всегда
                    возвращать 15. Это значит, что допустим любой вы-
                    зов setcolor со значением от 0 до 15. В CGA в ре-
                    жиме высокого разрешения или в монохромном адап-
                    тере Hercules getmaxcolor возвращает значение 1,
                    т.к. эти адаптеры поддерживают только два цвета
                    рисования: 0 или 1.

 Возвращаемое       getmaxcolor возвращает наивысшее допусти-
 значение           мое значение цвета.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getbcolor getcolor getpalette getpalettesize
                    setcolor

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 char colstr[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;

 /* получить информацию о цвете и преобразовать в строку */
 sprintf(colstr,"Этот адаптер поддерживает 0..%d цветов",
          getmaxcolor());
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,colstr);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

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

 Синтаксис          #include
                    int far getmaxmode(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getmaxmode позволяет вам найти максимальный
                    номер режима для текущего загруженного драйвера,
                    непосредственно из этого драйвера. Это дает ему
                    преимущество над getmoderange, который работает
                    только с драйверами Borland. Минимальный режим -
                    0.

 Возвращаемое       getmaxmode возвращает максимальный номер
 значение           режима для текущего драйвера.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getmodename getmoderange

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 char modestr[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;

 /* получить информацию о режиме и преобразовать в строку */
 sprintf(modestr,"Этот адаптер поддерживает режимы 0..%d",
          getmaxmode());
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,modestr);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getmaxx
 Функция            Возвращает максимальную координату х экрана.

 Синтаксис          #include
                    int far getmaxx(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getmaxx возвращает максимальное (относи-
                    тельно экрана) значение х для текущего драйвера и
                    режима.

                    Например, в CGA в режиме 320х200, getmaxx возвра-
                    щает 319. getmaxx неоценимо для центрирования,
                    определения границ в oбласти экрана и т. д.

 Возвращаемое       getmaxx возвращает максимальную координату
 значение           х экрана.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getmaxy getx

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 char xrange[80],yrange[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;

 /* преобразовать в строку информацию о максимальном разрешении */
 sprintf(xrange,"Диапазон значений х: 0..%d",getmaxx());
 sprintf(yrange,"Диапазон значений y: 0..%d",getmaxy());
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,xrange);
 outtextxy(midx,midy+textheight("W"),yrange);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getmaxy
 Функция            Возвращает максимальную координату y экрана.

 Синтаксис          #include
                    int far getmaxy(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getmaxy возвращает максимальное (относи-
                    тельно экрана) значение y для текущего значения
                    драйвера и режима.

                    Например, в CGA в режиме 320х200, getmaxy возвра-
                    щает 199. getmaxy неоценимо для центрирования,
                    определения границ в oбласти экрана и т. д.

 Возвращаемое       getmaxy возвращает максимальную координату
 значение           y экрана.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getmaxx getx gety

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 char xrange[80],yrange[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;

 /* преобразовать в строку информацию о максимальном разрешении */
 sprintf(xrange,"Диапазон значений х: 0..%d",getmaxx());
 sprintf(yrange,"Диапазон значений y: 0..%d",getmaxy());
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,xrange);
 outtextxy(midx,midy+textheight("W"),yrange);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getmodename
 Функция            Возвращает указатель на строку, содержащую
                    имя указанного графического режима.

 Синтаксис          #include
                    char *far getmodename(int mode_number);

 Файл, содержащий   graphics.h
 прототип

 Описание           getmodename принимает номер графического режима
                    как входной параметр и возвращает строку, содер-
                    жащую имя текущего графического режима. Имена ре-
                    жимов встроены в каждый драйвер. Возвращаемое
                    значение ("320x200 CGA", "640x200 CGA", и т.д.)
                    используется для построения меню или отображения
                    статуса.

 Возвращаемое       getmodename возвращает указатель на строку
 значение           с именем графического режима.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getmaxmode getmoderange

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy,mode;
 char numname[80],modename[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* получить код режима */
 mode = getgraphmode();
 sprintf(numname,"Номер режима: %d",mode);
 sprintf(modename,"Текущий графический режим: %s\n",getmodename(mode));
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,numname);
 outtextxy(midx,midy+2*textheight("W"),modename);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getmoderange
 Функция            Получает диапазон режимов для данного графиче-
                    ского драйвера.

 Синтаксис          #include
                    void far getmoderange(int graphdriver, int
                    far *lomode, int far *himode);

 Файл, содержащий   graphics.h
 прототип

 Описание           getmoderange получает диапазон допустимых
                    графических режимов для заданного графического
                    драйвера graphdriver. Наименьшее допустимое зна-
                    чение режима возвращается в *lomode, а наивысшее
                    допустимое значение в *himode. Если graphdriver
                    определяет несуществующий графический драйвер,
                    *lomonade и *himonade устанавливаются в -1. Если
                    значение grapgdriver равно -1, будут возвращены
                    режимы текущего загруженного драйвера.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getgraphmode getmaxmode getmodename
                    initgraph setgraphmode

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 int low,high;
 char mrange[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* получить диапазон, допустимых для данного драйвера режимов */
 mode = getmoderange(gdriver,&low,&high);
 sprintf(mrange,"Драйвер поддерживает режимы в диапазоне: %d..%d",
         low,high);
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,mrange);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getpalette
 Функция            Получает информацию о текущей палитре.

 Синтаксис          #include
                    void far getpalette(struct palettetype far
                           *palette);

 Файл, содержащий   graphics.h
 прототип

 Описание           Заполняет структуру palettetype, на которую
                    ссылается palette, информацией о размере политры
                    и ее цветах. Константа MAXCOLORS и структура
                    palettype, используемые getpalette, определены в
                    graphics.h следующим образом:

                    #define MAXCOLORS 15

                    struct palettetype{
                           unsigned char size;
                           signed char colors[MAXCOLORS+1];
                    };

                    size дает количество цветов в палитре текущего
                    драйвера и режима.

                    colors - это массив цветов данной палитры.

                    Примечание. getpalette нельзя использовать с
                    драйвером для IBM-8514.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getbkcolor getcolor getdefaultpalette
                    getmaxcolor setallpalette setpalette

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 struct palettetype pal;
 char psize[80],pval[20];
 int i,ht;
 int y=10';

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 /* получить копию палитры */
 getpalette(&pal);
 /* преобразовать ее в строку */
 sprintf(psize,"Палитра имеет %d изменяемых элементов",pal.size);
 /* вывести информацию */
 outtextxy(0,y,psize);
 if(pal.size != 0)
 {
    ht = textheight("W");
    y += 2*ht;
    outtextxy(0,y,"Ниже приведены значения цветов палитры");
    y += 2*ht;
    for(i=0; i

   cpp

     getpalettesize

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

 Синтаксис          #include
                    int far getpalettesize(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getpalettesize используется для определения того,
                    как много элементов палитры может быть установле-
                    но для текущего графического режима. Например,
                    EGA в цветовом режиме возвращает 16.

 Возвращаемое       getpalettesize возвращает количество элементов
 значение           в текущей палитре.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     setpalette setallpalette

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int midx,midy;
 char psize[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* преобразовать в строку число элементов палитры */
 sprintf(psize,"Палитра имеет %d изменяемых элементов",
        getpalettesize());
 /* вывести информацию */
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,psize);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getpass
 Функция            Вводит пароль.

 Синтаксис          #include
                    char *getpass(char *prompt);

 Файл, содержащий   conio.h
 прототип

 Описание           Функция getpass считывает пароль с системной кон-
                    соли после выдачи на экран специального сообщения
                    - символьной строки с нулевым окончанием (prompt)
                    и отменяет отображение пароля на экране. Возвра-
                    щаемый в результате работы функции указатель ад-
                    ресует строку символов с нулевым окончанием дли-
                    ной до 8 символов (не считая нулевое окончание)-
                    пароль.

 Возвращаемое       Возвращаемое значение - это указатель на строку
 значение           символов типа static, которая перезаписывается при
                    каждом вызове.

 Переносимость      Функция поддерживается на системах UNIX.

 Смотрите также     getch

 Пример:

 #include

 int main(void)
 {
    char *password;
    password = getpass("Введите пароль:");
    cprintf("Пароль: %s\r\n",password);
    return 0;


cpp

getpid
 Функция            Получает идентификатор процесса для программы.

 Синтаксис          #include
                    unsigned getpid(void);

 Файл, содержащий   process.h
 прототип

 Описание           Идентификатор процесса идентифицирует программу.
                    Этот параметр пришел из мультизадачных операцион-
                    ных систем типа UNIX, где процесс идентифицирует-
                    ся уникальным номером.

 Возвращаемое       getpid возвращает адрес сегмента psp программы.
 значение

 Переносимость      Поддерживается системой UNIX.

 Смотрите также     getpsp _pspпеременная).

 Пример:

 #include
 #include

 int main(void)
 {
    printf("Идентификатор процесса данной программы = %X\n",
            getpid());
    printf("Под DOS - это адрес сегмента PSP\n");
    return 0;


cpp

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

 Синтаксис          #include
                    unsigned far getpixel(int x, int y);

 Файл, содержащий   graphics.h
 прототип

 Описание           getpixel получает цвет точки с координатами
                    (x,y).

 Возвращаемое       Возвращает цвет заданного пикселя.
 значение

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getimage putpixel

 Пример:

 #include
 #include
 #include
 #include
 #include

 #define PIXEL_COUNT 1000
 #define DELAY_TIME 100 /* в миллисекундах */

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int x,y,i,color,maxx,maxy,maxcolor,seed;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 maxy = getmaxy();
 maxcolor = getmaxcolor()+1;
 while(!kbhit())
 {
 /* сбросить генератор случайных чисел */
 seed = random(32767);
 stand(seed);
 for(i=0;i


cpp

getpsp
 Функция            Получает адрес префикса программного сегмента
                    (psp).

 Синтаксис          #include
                    unsigned getpsp(void);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getpsp получает адрес префикса программно-
                    го сегмента (PSP) посредством системного вызова
                    DOS 0x62.

                    Данный вызов поддерживается только в операционных
                    системах DOS версий 3.x. Для версий MS-DOS 2.x и
                    3.x можно использовать глобальную переменную
                    _psp, устанавливаемую стартовым кодом.

 Возвращаемое       Функция getpsp возвращает адрес сегмента PSP.
 значение

 Переносимость      Функция уникальна для DOS версии 3.0 и не под-
                    держивается в более ранних версиях DOS.

 Смотрите также     getenv _pspvariable.

 Пример:

 #include
 #include

 int main(void)
 {
    static char command[128];
    char far *cp;
    int len,l;
    printf("Префикс программного сегмента: %x\n",getpsp());
    /* _psp получает адрес префикса программного сегмента.
       Остаток командной строки хранится в psp по смещению 80H
       относительно начала psp. Ниже показано, как можно полу-
       чить эти аргументы. */
    cp = MK_FP(_psp,0x80);
    len = *cp;
    for(i=0; i


cpp

gets
 Функция            Получает строку символов из потока.

 Синтаксис          #include
                    char *gets(char *s);

 Файл, содержащий   stdio.h
 прототип

 Описание           Функция gets читает строку символов, оканчиваю-
                    щуюся символом перевода строки в переменную *s из
                    стандартного входного потока stdin. Данная сим-
                    вольная строка оканчивается символом перехода на
                    новую строку, который при записи в *s заменяется
                    на нулевое окончание (\0).

                    В отличие от scanf, gets позволяет вводить стро-
                    ки, содержащие символы пробела и табуляции. Все,
                    что было введено до перевода каретки, помещается
                    в s.

 Возвращаемое       При успешном завершении, функция gets возвращает
 значение           строку s; при достижении конца файла (EOF) или
                    ошибке возвращается NULL.

 Переносимость      Функции поддерживаются на системах UNIX и стандар-
                    том ANSI C.

 Смотрите также     cgets ferror fgets fopen fputs fread getc
                    puts scanf

 Пример:

 #include

 int main(void)
 {
     char string[133];
     printf("Введите строку:");
     gets(string);
     printf("Cтрока = '%s'\n,string);


cpp

gettext
 Функция            Копирует текст с экрана в память.

 Синтаксис          #include
                    int gettext(int left, int top, int right,
                                int bottom, void *destin);

 Файл содержащий    conio.h
 прототип

 Описание           gettext запоминает содержимое прямоугольника на
                    текстовом экране с размерами, определяемыми пара-
                    метрами left, top, right, bottom, в области памя-
                    ти, на которую указывает параметр destin.

                    Все координаты являются абсолютными координатами
                    экрана, а не относительными в зависимости от ок-
                    на. Левый верхний угол имеет координаты (1,1).

                    gettext считывает содержимое экрана последова-
                    тельно слева направо и сверху вниз.

                    Каждая позиция на экране требует для хранения 2
                    байта: первый байт - это код символа а второй -
                    его атрибуты. Т.о. для хранения прямоугольника
                    шириной w и высотой h требуется h*w*2 байт.

 Возвращаемое       В случае успешного завершения gettext возвращает
 значение           1. В случае ошибки (если вы, например, задали ко-
                    ординаты, выходящие за пределы экрана для данного
                    режима) она возвращает 0.

 Переносимость      gettext работает только на системах совместимых с
                    IBM PC и совместимых по BIOS.

 Смотрите также     movetext puttext

 Пример:

 #include

 char buffer[4096];

 int main(void)
 {
    int i;
    clrscr();
    for(i=0; i<=20; i++)
       cprintf("Строка #%d\r\n",i);
    gettext(1,1,80,25,buffer);
    gotoxy(1,25);
    cprintf("Для обнуления экрана нажмите любую клавишу...\n");
    getch();
    clrscr();
    gotoxy(1,25);
    cprintf("Для восстановления экрана нажмите клавишу...\n");
    getch();
    puttext(1,1,80,25);
    gotoxy(1,25);
    cprintf("Для завершения нажмите любую клавишу...\n");
    getch();
    return 0;


cpp

gettextinfo
 Функция            Получает информацию о текстовом режиме.

 Синтаксис          #include
                    void gettextinfo(struct text_info *r);

 Файл, содержащий   conio.h
 прототип

 Описание           gettextinfo заполняет структуру типа text_info,
                    на которую указывает параметр r, информацией о
                    текущем текстовом режиме.

                    text_info определена в conio.h следующим образом:

                    struct text_info {
                       unsigneg char winleft;   /*левая коорд. окна */
                       unsigneg char wintop;    /*коорд. вершины окна */
                       unsigneg char winright;  /* правая коорд. окна */
                       unsigneg char winbottom; /* нижная коорд. окна */
                       unsigneg char attribute; /* атрибуты текста */
                       unsigneg char normattr;  /* нормальные атрибуты */
                       unsigneg char currmode;  /* BW40, BW80, C40 или
                                                                  С80 */
                       unsigneg char screenheight; /* bottom - top */
                       unsigneg char screenwightу  /* right - left */
                       unsigneg char curx;    /* х - коорд. курсора */
                       unsigneg char cury;    /* y - коорд. курсора */
                    };

 Возвращаемое       gettextinfo возвращает результат в параметре r.
 значение

 Переносимость      gettextinfo работает только на компьютерах,
                    совместимых с IBM PC.

 Смотрите также     textattr textbackground textcolor textmode
                    wherex wherey window

 Пример:

 #include

 int main(void)
 {
    struct text_info ti;
    gettextinfo(&ti);
    cprintf("Левая граница:       %2d\r\n",ti.winleft);
    cprintf("Верхняя граница:     %2d\r\n",ti.wintop);
    cprintf("Правая граница:      %2d\r\n",ti.winrigth);
    cprintf("Нижняя граница:      %2d\r\n",ti.winbottom);
    cprintf("Атрибуты:            %2d\r\n",ti.attribute);
    cprintf("Нормальные атрибуты: %2d\r\n",ti.normattr);
    cprintf("Текущий режим:       %2d\r\n",ti.curmode);
    cprintf("Высота экрана:       %2d\r\n",ti.screenheight);
    cprintf("Ширина экрана:       %2d\r\n",ti.screenwidth);
    cprintf("Координата х:        %2d\r\n",ti.curx);
    cprintf("Координата y:        %2d\r\n",ti.cury);
    return 0;


cpp

gettextsettings
 Функция            Получает информацию о текущем графическом шрифте.

 Синтаксис          #include
                    void var gettexsettings(struct
                         textsettingstype far *texttypeinfo);

 Файл, содержащий   graphics.h
 прототип

 Описание           gettextsettings заполняет структуру
                    textsettingstype, на которую указывает textinfo,
                    информацией о текущем текстовом шрифте, направле-
                    нии, размере и выравнивании.

                    Структура textsettingstype, используемая
                    gettextsettings, определена в graphics.h следую-
                    щим образом:

                    struct textsettingstype{
                     int font;
                     int direction;
                     int charsize;
                     int horiz;
                     int vert;
                     };

                    Смотрите settextstyle, в которой содержится опи-
                    сание этих полей.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     outtext outtextxy registerbgifont
                    settextjustify settextstyle
                    setusercharsize textheight textwidth

 Пример:

 #include
 #include
 #include
 #include

 /* имена поддерживаемых шрифтов */
 char *font[] = {"DEFAULT_FONT",
                 "TRIPLEX_FONT",
                 "SMALL_FONT",
                 "SANS_SERIF_FONT",
                 "GOTHIC_FONT"
                 };
 /* имена направлений текста */
 char *dir[] = {"HORIS_DIR","VERT_DIR"};

 /* горизонтальное выравнивание текста */
 char *hjust[] = {"LEFT_TEXT","CENTER_TEXT","RIGTH_TEXT"};

 /* вертикальное выравнивание текста */
 char *vjust[] = {"BOTTOM_TEXT","CENTER_TEXT","TOP_TEXT"};

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 struct textsettingstype textinfo;
 int midx,midy,ht;
 char fontstr[80],dirstr[80],sizestr[80];
 char hjuststr[80],vjuststr[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* получить информацию о текущем шрифте */
 gettextsettings(&textinfo);
 /* преобразовать информацию в строки */
 sprintf(fontstr,"Шрифт: %s",font[textinfo.font]);
 sprintf(dirstr,"Напрвление: %s",dir[textinfo.direction]);
 sprintf(sizestr,"Размер: %d",textinfo.charsize);
 sprintf(hjuststr,"Горизонтальное выравнивание: %s",
          hjust[textinfo.horiz]);
 sprintf(hjuststr,"Вертикальное выравнивание: %s",
          hjust[textinfo.vert]);
 /* вывести информацию */
 ht = textheight("W");
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,fontstr);
 outtextxy(midx,midy+2*ht,direstr);
 outtextxy(midx,midy+4*ht,sizestr);
 outtextxy(midx,midy+6*ht,hjuststr);
 outtextxy(midx,midy+8*ht,vjuststr);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

gettime
 Функция            Получает системное время.

 Синтаксис          #include
                    void gettime(struct time * timep);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция gettime заполняет структуру time на кото-
                    рую указывает параметр timep, текущим системным
                    временем.

                    Структура time определена следующим образом:

                    struct time {
                        unsigned char ti_min;   /* минуты */
                        unsugned char ti_hour;  /* часы */
                        unsigned char ti_hund;  /* сотые доли секунды */
                        unsigned char ti_sec;   /* секунды */
                    };

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

 Переносимость      gettime уникальна для DOS.

 Смотрите также     getdate setdate settime stime time

 Пример:

 #include
 #include

 int main(void)
 {
    struct time t;
    gettime(&t);
    printf("Время: %2d:%02d:02d.%02d\n",t.ti_hour,t.ti_min,
            t.ti_sec, t.ti_hung);
    return 0;


cpp

getvect
 Функция            Получает содержимое вектора прерывания.

 Синтаксис          #include
                    void interrupt(*getvect(int intr_num))();

 Файл, содержащий   dos.h
 прототип

 Описание           Любой из семейства процессоров 8086 содержит набор
                    векторов прерываний, пронумерованных от 0 до 255.
                    4-х байтовое значение каждого вектора есть адрес,
                    по которому расположена функция обработки преры-
                    вания.

                    Функция getvect считывает значение вектора с име-
                    нем intr_num и интерпретирует прочитанное значе-
                    ние, как "дальний" указатель (с атрибутом "far")
                    на некоторую функцию прерывания. Параметр
                    intr_num должен иметь значение от 0 до 255.

 Возвращаемое       Функция getvect возвращает 4-х байтовое значение,
 значение           хранящееся в векторе прерывания с номером
                    intr_num.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     disable enable geninterrupt setvect

 Пример

 #include
 #include

 void interrupt get_out(); /* прототип ф-ции обработки прерывания */
 void interrupt (*oldfunc)(); /* указатель на прерывание */
 int looping = 1;

 int main(void)
 {
    puts("Нажмите  для завершения");
    /* сохранить старый вектор */
    oldfunc = getvect(5);
    /* установить новый вектор */
    setvect(5,get_out)
    /* ничего не делать */
    while(looping);
    /* восстановить старый вектор */
    setvect(5,oldfunc);
    puts("Успешно");
    return 0;
 }
 void interrupt get_out()
 {
    looping = 0; /* изменить значение глобальной переменной */


cpp

getverify
 Функция            Получает состояние флажка верификации.

 Синтаксис          #include
                    int getverify(void);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция getverify получает текущее состояние флаж-
                    ка верификации.

                    Флажок верификации контролирует вывод на диск.
                    Когда верификация выключена, запись на диск не
                    контролируется, если же верификация включена, все
                    операции записи на диск контролируются (для га-
                    рантии правильности записи данных).

 Возвращаемое       Функция getverify возвращает текущее состояние
 значение           флажка верификации, либо 0, либо 1.

                    Значение 0 = верификация выключена (off);
                    значение 1 = верификация включена (on).

 Переносимость      Функция уникальна для DOS.

 Смотрите также     setverify

 Пример:

 #include
 #include

 int main(void)
 {
    if(getverify())
       printf("Флаг верификации включен\n");
    else
       printf("Флаг верификации выключен\n");
    return 0;


cpp

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

 Синтаксис          #include
                    void var getviewsettings(struct
                     viewporttype far *viewport);

 Файл, содержащий   graphics.h
 прототип

 Описание           getviewsettings заполняет структуру viewporttype,
                    на которую указывает viewport информацией о теку-
                    щей области просмотра. Структура viewporttype ис-
                    пользуемая getviewport определена в graphics.h
                    следующим образом:

                     struct viewporttype {
                     int left, top, right, bottom;
                     int clip;
                     };

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     clearviewport getx gety srtviewport

 Пример:

 #include
 #include
 #include
 #include

 char *clip[] = {"OFF","ON"};

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 struct viewporttype viewinfo;
 int midx,midy,ht;
 char topstr[80],botstr[80],clipstr[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 midx = getmaxx()/2;
 midy = getmaxy()/2;
 /* получить информацию о текущей области просмотра */
 getviewsettings(&viewinfo);
 /* преобразовать информацию в строки */
 sprintf(topstr,"Левый верхний угол(%d,%d)",viewinfo.left,
        viewinfo.top);
 sprintf(botstr,"Правый нижний угол(%d,%d)",viewinfo.rigth,
        viewinfo.bottom);
 sprintf(clipstr,"Клиппирование: %s",clip[viewinfo.clip]);
 /* вывести информацию */
 ht = textheight("W");
 settextjustify(CENTER_TEXT,CENTER_TEXT);
 outtextxy(midx,midy,topstr);
 outtextxy(midx,midy+2*ht,botstr);
 outtextxy(midx,midy+4*ht,clipstr);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

getw
 Функция            Вводит из потока целое число.

 Синтаксис          #include
                    int getw(FILE *stream);

 Файл, содержащий   stdio.h
 прототип

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

 Возвращаемое       getw возвращает следующее целое из входного потока
 значение           При ошибке или в конце файла она возвращает EOF.
                    T.к. EOF является допустимым значением, то для
                    определения ошибки или конца файла необходимо ис-
                    пользовать функции feof и ferror.

 Переносимость      getw поддерживается системами UNIX.

 Смотрите также     putw

 Пример:

 #include
 #include

 #define FNAME "test.$$$"

 int main(void)
 {
    FILE *fp;
    int word;
    /* записать в файл слово */
    fp = open(FNAME,"wb");
    if(fp==NULL)
    {
       printf("Ошибка при открытии файла\n");
       exit(1);
    }
    word = 94;
    putw(word,fp);
    if(ferror(fp))
       printf("Ошибка, при записи в файл\n");
    else
       printf("Успешная запись в файл\n");
    fclose(fp);
    /* повторное открытие файла */
    fp = fopen(FNAME,"rb");
    if(fp==NULL)
    {
       printf("Ошибка при открытии файла%s\n",FNAME);
       exit(1);
    }
    word = getw(fp);
    if(ferror(fp))
       printf("Ошибка, при чтении из файла\n");
    else
       printf("Успешное чтение в файле, word = %d\n",word);
    fclose(fp);
    unlink(FNAME);
    return 0;


cpp

getx
 Функция            Возвращает координату x текущей графической
                    позиции.

 Синтаксис          #include
                    int far getx(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           getx находит координату x текущей графичес-
                    кой позиции. Значение берется относительно теку-
                    щей области просмотра.

 Возвращаемое       getx возвращает координату x текущей позиции
 значение

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getmaxx getmaxy getviewsettings gety moveto

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 char message[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }

 /* переместить точку в центр экрана */
 moveto(getmaxx()/2,getmaxy()/2);
 /* создать строку */
 sprintf(message,"<-(%d,%d)",getx(),gety());
 outtext(message);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

gety
 Функция            Возвращает координату y текущей графической
                    позиции.

 Синтаксис          #include
                    int far gety(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           gety находит координату y текущей графичес-
                    кой позиции. Значение берется относительно теку-
                    щей области просмотра.

 Возвращаемое       gety возвращает координату y текущей позиции
 значение

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     getmaxx getmaxy getviewsettings getx moveto

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 char message[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }

 /* переместить точку в центр экрана */
 moveto(getmaxx()/2,getmaxy()/2);
 /* создать строку */
 sprintf(message,"<-(%d,%d)",getx(),gety());
 outtext(message);
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

gmtime
 Функция            Преобразует дату и время во время по стандарту
                    Гринвича.

 Синтаксис          #include
                    struct tm *gmtime(long *timer);

 Файл, содержащий   time.h
 прототип

 Описание           gmtime получает адрес значения, возвращаемого
                    функцией time, и возвращает указатель на структу-
                    ру типа tm, содержащую разделенное время. gmtime
                    преобразует время непосредственно по Гринвичу.

                    Глобальная переменная типа long timezone должна
                    содержать разницу в секундах между временем по
                    Гринвичу и местным временем. Глобальная перемен-
                    ная daylight должна быть равна 0, если не исполь-
                    зуется стандартное летнее время.

                    Структура tm объявленна в time.h следующим обра-
                    зом:

                    struct tm {
                    int tm_sec;
                    int tm_min;
                    int tm_hour;
                    int tm_mday;
                    int tm_mon;
                    int tm_year;
                    int tm_wday;
                    int tm_yday;
                    int tm_isdst;
                    };

                    Эти элементы содержат время в 24-часовой записи,
                    день месяца 1-31, месяц 1-12, день недели (воск-
                    ресенье = 0), год - 1900, день года 0-365 и флаг,
                    определяющий действует ли летнее время.

 Возвращаемое       gmtime возвращает указатель на структуру, содержа-
 значение           щую разделенное время. Эта структура имеет класс
                    памяти static и перезаписывается при каждом вызо-
                    ве.

 Переносимость      gmtime доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Смотрите также     asctime ctime localtime stime time tzset

 Пример:

 #include
 #include
 #include

 char *tzstr = "TZ=PST8PDT";

 int main(void)
 {
    time_t t;
    struct tm *gmt,*area;
    putenv(tzstr);
    t = time(NULL);
    area = localtime(&t);
    printf("Локальное время:%s\n",asctime(area));
    gmt = gmtime(&t);
    printf("GMT:%s\n",asctime(gmt));
    return 0;


cpp

gotoxy
 Функция            Позиционирует курсор в текстовом окне.

 Синтаксис          #include
                    void gotoxy(int x, int y);

 Файл, содержащий   conio.h
 прототип

 Описание           gotoxy перемещает курсор в текстовом окне в ука-
                    занную позицию. Если координаты указаны неверно,
                    вызов данной функции игнорируется. Например, это
                    произойдет при вызове gotoxy(40,30) когда окно
                    имеет размеры 35 на 25.

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

 Переносимость      gotoxy работает только на системах, совместимых с
                    IBM PC. Аналогичная функция есть в Turbo Pascal.

 Смотрите также     wherex wherey window

 Пример:

 #include

 int main(void)
 {
    clrscr();
    gotoxy(35,12);
    cprintf("Привет!");
    getch();
    return 0;


cpp

graphdefaults
 Функция            Переустанавливает все графические параметры в их
                    начальные значения.

 Синтаксис          #include
                    void far graphdefaults(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           graphdefaults переустанавливает все графические
                    параметры в их начальные значения:

                    - устанавливает область просмотра в полный экран;

                    - перемещает текущую позицию в (0,0);

                    - устанавливает начальные цвета палитры, цвет фо-
                      на и цвет рисования;

                    - устанавливает начальный тип и шаблон заполне-
                      ния;

                    - устанавливает начальный шрифт и выравнивание.

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

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     initgraph setgraphmode

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int maxx, maxy;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 maxy = getmaxy();
 /* вывести линию со своими параметрами */
 setlinestyle(DOTTED_LINE,0,3);
 line(o,o,maxx,maxy);
 outtextxy(maxx/2,maxy/2,"Перед восстановлением исходных значений");
 getch();
 /* восстановить исходные значение всех параметров */
 graphdefaults();
 cleardevice();
 /* вывести строку с исходными параметрами */
 line(o,o,maxx,maxy);
 outtextxy(maxx/2,maxy/2,"После восстановления исходных значений");
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

grapherrormsg
 Функция            Возвращает указатель на строку сообщения об ошиб-
                    ке.

 Синтаксис          #include
                    char *far grapherrormsg(int errorcode);

 Файл, содержащий   graphics.h
 прототип

 Описание           grapherrormsg возвращает указатель на строку
                    сообщения об ошибке, связанной с errorcode - зна-
                    чением, возвращаемым graphresult.

                    Обратитесь к описанию errno (Глава 2) для озна-
                    комления со списком ошибок и их мнемоникой.

 Возвращаемое       grapherrormsg возвращает указатель на строку
 значение           сообщения об ошибке.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     graphresult

 Пример:

 #include
 #include
 #include
 #include

 #define NONSENSE -50

 int main(void)
 {
 /* Инициация ошибки */
 int graphdriver = NONSENSE, gmode, errorcode;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();

 /* выдать соответствующее ошибке сообщение */
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 line(o,o,getmaxx(),getmaxy());
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

graphresult
 Функция            Возвращает код ошибки последней неудачно выпол-
                    ненной графической операции.

 Синтаксис          #include
                    int far graphresult(void);

 Файл, содержащий   graphics.h
 прототип

 Описание           graphresult возвращает код ошибки последней гра-
                    фической операции, которая сообщила об ошибке, и
                    устанавливает уровень ошибки в grOk.

                    В следующей таблице приведены коды ошибок, возв-
                    ращаемые graphresult. Перечисляемый тип
                    graph_errors определяет ошибки в данной таблице.
                    graph_errors объявлен в graphics.h.
      -----------------------------------------------------------
      код       константа         соответствующая строка
      ошибки    graphics_errors    сообщения об ошибке
      -----------------------------------------------------------
        0    grOk                  нет ошибок
       -1    grNoInitGraph         BGI-графика не установлена
                                   (используйте initgraph)
       -2    grNotDetect           не обнаружены графические аппа-
                                   ратные средства
       -3    grFileNotFound        файл драйвера не найден
       -4    grInvalidDriver       неисправный файл драйвера
       -5    grNoLoadMem           нет места в памяти для загрузки
                                   драйвера
       -6    grNoScanMem           выход за память при сканирующем
                                   заполнении
       -7    grNoFloodMem          выход за память при лавинном за-
                                   полнении
       -8    grFontNotFound        файл со шрифтом не найден
       -9    grNoFontMem           нет места в памяти для загрузки
                                   шрифта
       -10   grInvalidMode         неверный графический режим для
                                   выбранного драйвера
       -11   grError               графическая ошибка
       -12   grIOError             графическая ошибка ввода/вывода
       -13   grInvalidFont         неверный шрифтовый файл
       -14   grInvalidFontNum      неверный номер шрифта
       -15   grInvalidDeviceNum    неверный номер устройства
       -18   grInvalidVersion      неверный номер версии
      ------------------------------------------------------------

                    Заметим, что переменные, полученные от graph-
                    result, переустанавливаются в 0 после завершения
                    вызова graphresult. Поэтому необходимо сохранять
                    значения, полученные от graph- result, во времен-
                    ных переменных и затем их использовать.

 Возвращаемое       graphresult возвращает текущий номер графи-
 значение           ческой ошибки - целое число от -15 до 0;
                    grapherrormsg возвращает указатель на строку,
                    связанную со значением, возвращаемым функцией
                    graphresult.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также      detectgraph drawpoly fillpoly floodfill
                     grapherrormsg initgraph pieslice
                     registerbgidriver registerbgifont
                     setallpalette setcolor setfillstyle
                     setgraphmode setlinestyle setpalette
                     settextjustify settextstyle setusercharsize
                     setviewport setvisualpage
 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* требуется автоопределение */
 int graphdriver = DETECT, gmode, errorcode;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 line(o,o,getmaxx(),getmaxy());
 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

harderr
 Функция            Устанавливает подпрограмму обработки ошибок
                    электронного оборудования.

 Синтаксис          #include
                    void harderr(*handler)());

 Файл, содержащий   dos.h
 прототип

 Описание           Функция harderr устанавливает подпрограмму обра-
                    ботки сбоев электронного оборудования для текущей
                    программы. Данная подпрограмма вызывается к рабо-
                    те, как только возникнет прерывание 0x24. (см.
                    документ "Справочное руководство программиста для
                    DOS").

                    При появлении данного прерывыания происходит вы-
                    зов функции handler. Функция должна быть вызвана
                    со следующими аргументами:

                    handler(int errval, int ax, int bp, int si);

                    Переменная errval - код ошибки, устанавливаемый
                    DOS в регистре DI. ax, bp и si - значения, кото-
                    рые MS-DOS помещает соответственно в регистры
                    AX,BP,SI.

                    - параметр ax обозначает, произошла ли ошибка
                    диска или какого-либо другого устройства. Если ax
                    не отрицательно, произошла дисковая ошибка, в
                    противном случае, это ошибка другого устройства.
                    Для дисковой ошибки значение ax, сложенное логи-
                    чески (операцией AND) с 0x00FF, даст номер диско-
                    вода, в котором произошел сбой (1=A; 2=B; и
                    т.д.).

                    - bp и si вместе указывают на заголовок драйвера
                    устройства, в котором произошел сбой. bp содержит
                    адрес сегмента, а si смещение.

                    Названная выше функция не вызывается непосредст-
                    венно. Функция harderr устанавливает подпрограмму
                    обработки прерываний DOS, которая вызывает функ-
                    цию. Для получения информации из заголовка драй-
                    вера можно использовать функции peek и peekb.

                    Программа - обработчик прерываний может использо-
                    вать системные вызовы DOS от 1 до 0xC, все ос-
                    тальные вызовы портят DOS. В частности, не могут
                    быть использованы ни любые стандартные подпрог-
                    раммы ввода/вывода CИ, ни любые подпрограммы вво-
                    да/вывода эмуляции UNIX.

                    Программа обработки прерывания должна возвращать
                    0, если необходимо игнорировать ошибку, 1, если
                    нужно повторить операцию и 2 для завершения прог-
                    раммы.

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

 Переносимость      Функция уникальна для DOS.

 Смотрите также     hardresume hardretn peek poke

 Пример:

 #include
 #include
 #include

 #define IGNORE 0
 #define RETRY  1
 #define ABORT  2

 /* определим сообщения об ошибке для дисковода */
 static char *err_msg[] = {"диск защищен от записи",
                           "неизвестное устройство",
                           "дисковод не готов",
                           "неизвестная команда",
                           "ошибка данных (CRC)",
                           "ошибка поиска",
                           "неизвестный тип носителя",
                           "ненайден сектор",
                           "в принтере нет бумаги",
                           "сбой при записи",
                           "ошибка при чтении",
                           "неустранимая ошибка",
                           "зарезервирован",
                           "зарезервирован",
                           "неверная смена диска"
                           };

 error_win(char *msg)
 {
    int retval;
    cputs(msg);
    /* запрос у пользователя дальнейших действий */
    while(1)
    {
       retval = getch();
       if(retval == 'a' || retval == 'A')
       {
          retval = ABORT;
          break;
       }
       if(retval == 'r' || retval == 'R')
       {
          retval = RETRY;
          break;
       }
       if(retval == 'i' || retval == 'I')
       {
          retval = IGNORE;
          break;
       }
    }
    return(retval);
 }
 /* прагма warn -par исключае выдачу предупреждений о том, что
 в подпрограмме не используются параметры errval,bp и si */

 #pragma warn -par

 int handler(int errval, int ax, int bp, int si)
 {
    static char msg[80];
    unsigned di;
    int drive;
    int errno;
    di = _DI;
 /* если это не ошибка диска, то проблемы возникли у
    другого устр-ва */
    if(ax<0)
    {
       /* сообщить об ошибке */
       error_win("Ошибка устройства");
       /* и вернуть управление программе */
       hardretn(ABORT);
    }
    /* иначе это ошибка диска */
    drive = ax&0x00ff;
    errno = di & 0xff;
    /* сообщить, что за ошибка */
    sprintf(msg,"Ошибка: %s на дисководе %c\r\nA)bort, R)etry,
                I)gnore:",err_msg[errno],'A'+drive);
    /* вернуть управление программе */
    hardresume(error_win(msg));
    return ABORT;
 }
 #pragma warn +par

 int main(void)
 {
    /* установить программу обработки прерывания */
    harderr(handler);
    printf("Make sure there is no disk in drive A:\n");
    printf("Press a key when ready...\n");
    getch();
    printf("Attempting to access A:\n);
    fopen("A:ANY.FIL","r");
    return 0;


cpp

hardresume
 Функция            Функция обработки ошибок электронного оборудова-
                    ния.

 Синтаксис          #include
                    void hardresume(int rescode);

 Файл, содержащий   dos.h
 прототип

 Описание           Программа обработки ошибочных состояний, устанав-
                    ливаемая функцией harderr может использовать фун-
                    кцию hardresume для возврата управления DOS. Воз-
                    вращаемое значение rescode должно содержать инди-
                    катор,  определяющий  игнорирование  ошибки  (0),
                    повторение операции (1) или завершение  программы
                    (2). Завершение программы выполняется посредством
                    прерывания DOS 0x23.

                    Программа обработки прерывания должна  возвращать
                    0,  если  необходимо игнорировать ошибку, 1, если
                    нужно повторить операцию и 2 для завершения прог-
                    раммы.

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

 Переносимость      Функция уникальна для DOS.

 Смотрите также     harderr hardretn

 Пример:

 /* Эта программа  отслеживает появление ошибок, и запрашивает у
    пользователя дальнейшие действия. Для того, чтобы была вызва-
    на подпрограмма обработки ошибок, запуская программу, выньте
    из дисковода А: диск. */

 #include
 #include
 #include

 #define IGNORE 0
 #define RETRY  1
 #define ABORT  2

 /* определим сообщения об ошибке для дисковода */
 static char *err_msg[] = {"диск защищен от записи",
                           "неизвестное устройство",
                           "дисковод не готов",
                           "неизвестная команда",
                           "ошибка данных (CRC)",
                           "ошибка поиска",
                           "неизвестный тип носителя",
                           "ненайден сектор",
                           "в принтере нет бумаги",
                           "сбой при записи",
                           "ошибка при чтении",
                           "неустранимая ошибка",
                           "зарезервирован",
                           "зарезервирован",
                           "неверная смена диска"
                           };

 error_win(char *msg)
 {
    int retval;
    cputs(msg);
    /* запрос у пользователя дальнейших действий */
    while(1)
    {
       retval = getch();
       if(retval == 'a' || retval == 'A')
       {
          retval = ABORT;
          break;
       }
       if(retval == 'r' || retval == 'R')
       {
          retval = RETRY;
          break;
       }
       if(retval == 'i' || retval == 'I')
       {
          retval = IGNORE;
          break;
       }
    }
    return(retval);
 }
 /* прагма warn -par исключае выдачу предупреждений о том, что
 не в подпролграмме не используются параметры errval,bp и si */
 #pragma warn -par

 int handler(int errval, int ax, int bp, int si)
 {
    static char msg[80];
    unsigned di;
    int drive;
    int errno;
    di = _DI;
 /* если это не ошибка диска, то возникли проблемы у
    другого устр-ва */
    if(ax<0)
    {
       /* сообщить об ошибке */
       error_win("Ошибка устройства");
       /* и вернуть управление программе */
       hardretn(ABORT);
    }
    /* иначе это ошибка диска */
    drive = ax&0x00ff;
    errno = di & 0xff;
    /* сообщить, что за ошибка */
    sprintf(msg,"Ошибка: %s на дисководе %c\r\nA)bort, R)etry,
                I)gnore:",err_msg[errno],'A'+drive);
    /* вернуть управление программе */
    hardresume(error_win(msg));
    return ABORT;
 }
 #pragma warn +par

 int main(void)
 {
    /* установить программу обработки прерывания */
    harderr(handler);
    printf("Make sure there is no disk in drive A:\n");
    printf("Press a key when ready...\n");
    getch();
    printf("Attempting to access A:\n);
    fopen("A:ANY.FIL","r");
    return 0;


cpp

hardretn
 Функция            Функция обработки ошибок электронного оборудова-
                    ния.

 Синтаксис          void hardretn(int errcode);

 Файл, содержащий   dos.h
 прототип

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

                    Программа обработки прерывания должна возвращать
                    0, если необходимо игнорировать ошибку, 1, если
                    нужно повторить операцию и 2 для завершения прог-
                    раммы.

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

 Переносимость      Функция уникальна для DOS.

 Смотрите также     harderr hardresume

 Пример:

 /* Эта программа  отслеживает появление ошибок, и запрашивает у
    пользователя дальнейшие действия. Для того, чтобы была вызва-
    на подпрограмма обработки ошибок, запуская программу, выньте
    из дисковода А: диск. */

 #include
 #include
 #include

 #define IGNORE 0
 #define RETRY  1
 #define ABORT  2

 /* определим сообщения об ошибке для дисковода */
 static char *err_msg[] = {"диск защищен от записи",
                           "неизвестное устройство",
                           "дисковод не готов",
                           "неизвестная команда",
                           "ошибка данных (CRC)",
                           "ошибка поиска",
                           "неизвестный тип носителя",
                           "ненайден сектор",
                           "в принтере нет бумаги",
                           "сбой при записи",
                           "ошибка при чтении",
                           "неустранимая ошибка",
                           "зарезервирован",
                           "зарезервирован",
                           "неверная смена диска"
                           };

 error_win(char *msg)
 {
    int retval;
    cputs(msg);
    /* запрос у пользователя дальнейших действий */
    while(1)
    {
       retval = getch();
       if(retval == 'a' || retval == 'A')
       {
          retval = ABORT;
          break;
       }
       if(retval == 'r' || retval == 'R')
       {
          retval = RETRY;
          break;
       }
       if(retval == 'i' || retval == 'I')
       {
          retval = IGNORE;
          break;
       }
    }
    return(retval);
 }
 /* прагма warn -par исключае выдачу предупреждений о том, что
 не в подпролграмме не используются параметры errval,bp и si */
 #pragma warn -par

 int handler(int errval, int ax, int bp, int si)
 {
    static char msg[80];
    unsigned di;
    int drive;
    int errno;
    di = _DI;
 /* если это не ошибка диска, то возникли проблемы у
    другого устр-ва */
    if(ax<0)
    {
       /* сообщить об ошибке */
       error_win("Ошибка устройства");
       /* и вернуть управление программе */
       hardretn(ABORT);
    }
    /* иначе это ошибка диска */
    drive = ax&0x00ff;
    errno = di & 0xff;
    /* сообщить, что за ошибка */
    sprintf(msg,"Ошибка: %s на дисководе %c\r\nA)bort, R)etry,
                I)gnore:",err_msg[errno],'A'+drive);
    /* вернуть управление программе */
    hardresume(error_win(msg));
    return ABORT;
 }
 #pragma warn +par

 int main(void)
 {
    /* установить программу обработки прерывания */
    harderr(handler);
    printf("Make sure there is no disk in drive A:\n");
    printf("Press a key when ready...\n");
    getch();
    printf("Attempting to access A:\n);
    fopen("A:ANY.FIL","r");
    return 0;


cpp

heapcheck
 Функция            Просматривает и проверяет память.

 Синтаксис          #include
                    int heapcheck(void);

 Файл, содержащий   alloc.h
 прототип

 Описание           heapcheck проходит по памяти и проверяет все
                    блоки, проверяя указатели, размер и другие важные
                    параметры. В больших моделях памяти heapcheck
                    совпадает с farheapcheck.

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

                    Если нет памяти, то возвращается значение
                    _HEAPEMPTY (1).
                    Если память проверена,то возвращается_HEAPOK (2).
                    Если память запорчена, то возвращается
                    _HEAPCORRUPT(-1).

 Переносимость      heapcheck уникальна для DOS.

 Смотрите также     farheapcheck

 Пример:

 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char *array[NUM_PTRS];
    int i;
    for(i=0; i

   cpp

     heapcheckfree

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

 Синтаксис          #include
                    int heapcheckfree(unsigned int fillvalue);

 Файл, содержащий   alloc.h
 прототип

 Описание           ????????????????

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

                    Если   нет   памяти,   то   возвращается   значение
                    _HEAPEMPTY  (1).
                    Если память проверена,то возвращается_HEAPOK (2).
                    Если память запорчена, то  возвращается
                    _HEAPCORRUPT(-1).
                    Если зачение заполнения отличается от fillvalue, то
                    возвращается _BADVALUE (-3).

 Переносимость      heapcheckfree уникальна для DOS.

 Смотрите также     farheapcheckfree

 Пример:

 #include
 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char *array[NUM_PTRS];
    int i;
    int res;
    for(i=0; i

   cpp

     heapchecknode

 Функция            Ищет и проверяет отдельный узел памяти.

 Синтаксис          #include
                    int heapchecknode(void *node);

 Файл, содержащий   alloc.h
 прототип

 Описание           Если узел был освобожден и heapchecknode вызы-
                    вается с указателем на освобожденный узел, то
                    heapchecknode может вернуть значение _BADNODE,
                    вместо предполагаемого _FREEENTRY. Это происходит
                    потому, что соседние свободные блоки сливаются, и
                    блок, указанный при вызове функции, больше не су-
                    ществует.

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

                    Если нет памяти, то возвращается значение
                    _HEAPEMPTY (1).
                    Если память запорчена, то возвращается
                    _HEAPCORRUPT(-1).
                    Если узел не найден, то возвращается _BADNODE (-2).
                    Если узел освобожден, то возвращается _FREEENTRY
                    (3).
                    Если узел, это используемый блок, то возвращается
                    _USEDENTRY (4)

 Переносимость      heapcheckfree уникальна для DOS.

 Смотрите также     farheapchecknode

 Пример:

 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char *array[NUM_PTRS];
    int i;
    for(i=0; i


cpp

heapfillfree
 Функция            Заполняет свободные блоки памяти констнтным
                    значением.

 Синтаксис          #include
                    int heapfillfree(unsigned int fillvalue);

 Файл, содержащий   alloc.h
 прототип

 Описание           ????????????????

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

                    Если нет памяти, то возвращается значение
                    _HEAPEMPTY  (1).
                    Если память проверена,то возвращается_HEAPOK (2).
                    Если память запорчена, то  возвращается
                    _HEAPCORRUPT(-1).
                    Если зачение заполнения отличается от fillvalue,
                    то возвращается _BADVALUE (-3).

 Переносимость      heapfillfree уникальна для DOS.

 Смотриет также     farheapfillfree.

 Пример:

 #include
 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    char *array[NUM_PTRS];
    int i;
    int res;
    for(i=0; i


cpp

heapwalk
 Функция            Используется для перемещенмия по памяти от узла к
                    узлу.

 Синтаксис          #include
                    int heapwalk(struct heapinfo *hi);

 Файл, содержащий   alloc.h
 прототип

 Описание           heapwalk подразумевает, что память не запорчена.
                    Для проверки, перед использованием heapwalk, вы-
                    зовите heapcheck. При достижении последнего бло-
                    ка, функция возвращает _HEAPOK. При следующем вы-
                    зове heapwalk, она вернет _HEAPEND.

                    heapwalk получает указатель на структуру типа
                    heapinfo (определена в файле alloc.h). При первом
                    вызове heapwalk установите поле hi.ptr в 0.
                    farheapwalk вернет вам в этом поле адрес первого
                    блока памяти. Поле hi.size содержит размер этого
                    блока в байтах. hi.in_use - это флаг, который ус-
                    танавливается, если этот блок используется в нас-
                    тоящий момент.

 Возвращемое        Если нет памяти, то возвращается значение
 значение           _HEAPEMPTY  (1).
                    Если hiapinfo содержит допустимые данные, то
                    возвращается _HEAPOK (2).
                    Если достигнут конец памяти, то возвращается
                    _HEAPEND (5).

 Переносимость      heapwalk уникальна для DOS.

 Смотрите также     farheapwalk

 Пример:

 #include
 #include

 #define NUM_PTRS    10
 #define NUM_BYTES   16

 int main(void)
 {
    struct heapinfo hi;
    char *array[NUM_PTRS];
    int i;
    for(i=0; i


cpp

highvideo
 Функция            Устанавливает бит интенсивности.

 Синтаксис          #include
                    void highvideo(void);

 Файл, содержащий   conio.h
 прототип

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

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

 Переносимость      highvideo работает только на машинах, совместимых с
                    IBM PC. Аналогичная функция есть в Turbo Pascal.

 Смотрите также     cprintf cputs gettextinfo lowvideo normvideo
                    textattr textcolor

 Пример:

 #include

 int main(void)
 {
    lowvideo();
    cprintf("Текст низкой интенсивности");
    highvideo();
    gotoxy(1,2);
    cprintf("Текст высокой интенсивности");
    return 0;


cpp

hypot
 Функция            Вычисляет гипотенузу прямоугольного треугольника.

 Синтаксис          #include
                    double hypot(double x, double y);

 Файл, содержащий   math.h
 прототип

 Описание           Функция hypot вычисляет значение z, где

                    z^2 = x^2 + y^2

                    и    z >= 0

                    (это - эквивалент длины гипотенузы прямоугольного
                    треугольника, если длины двух его сторон x и y).

 Возвращаемое       При успешном завершении, функция hypot возвращает
 значение           число z- двойной точности. При ошибке (такой,
                    например, как переполнение), функция hypot прис-
                    ваивает глобальной переменной errno значение:

                    ERANGE  - Результат превышает допустимое значение.

                    и сама возвращает значение HUGE_VAL.

                    Обработка ошибок для функции hypot может быть мо-
                    дифицирована посредством функции matherr.

 Переносимость      Функция поддерживается на системах UNIX.

 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x = 3.0;
    double y = 4.0;
    result = hypot(x,y);
    printf("Гипотенуза = %lf\n",result);
    return 0;


cpp

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

 Синтаксис          #include
                    double imag(complex x);

 Файл, содержащий   complex.h
 прототип

 Описание           Комплексное число состоит из двух чисел с плаваю-
                    щей точкой. imag возвращает одно из них, мнимую
                    часть.

 Возвращаемое       Мнимая часть комплексного числа.
 значение

 Переносимость      Комплексные функции требуют С++ и поэтому непере-
                    носимы.

 Смотри также       complex conj real

 Пример:

 #include
 #include

 int main(void)
 {
    double x=3.1,y=4.2;
    complex z = complex(x,y);
    cout << "z = " << z << "\n";
    cout << "Действительная часть = " << real(z) << "\n";
    cout << "Мнимая часть = " << imag(z) << "\n";
    cout << "Комплексно сопряженное = " << conj(z) << "\n";
    return 0;


cpp

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

 Синтаксис          #include
                    unsigned far  imagesize(int left,  int top,
                     int right, int bottom);

 Файл, содержащий   graphics.h
 прототип

 Описание           imagesize определяет размер области памяти, тре-
                    буемой для хранения битового образа. Если размер,
                    требуемый для выбранного образа больше или равен
                    64К-1 байт,  imagesize возвращает 0хFFFF(-1).

 Возвращаемое       imagesize возвращает размер требуемой области
 значение           памяти в байтах.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ними,
                    оснащенных дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотри также        getimage putimage
 Пример:

 #include
 #include
 #include
 #include

 #define ARROW_SIZE 10

 void draw_arrow(int x,int y);

 int main(void)
 {
 int graphdriver = DETECT, gmode, errorcode;
 void *arrow;
 int x,y,maxx;
 unsigned int size;

 /* инициализация драйвера и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 x = 0;
 y = getmaxy()/2;
 /* нарисовать перемещаемый объект */
 draw_arrow(x,y);
 /* определить размер памяти, для хранения изображения */
 size = imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE);
 /* выделить память */
 arrow = malloc(size);
 /* взять изображение */
 getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow);
 /* продолжать, пока не будет нажата клавиша */
 while(!kbhit())
 {
    /* стереть старый образ */
    putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
    x += ARROW_SIZE;
    if(x >= maxx)
       x = 0;
    /* нарисовать изображение */
    putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
 }

 free(arrow);
 closegraph();
 return 0;
 }

 void draw_arrow(int x,int y)
 {
    /* нарисовать на экране стрелку */
    moveto(x,y);
    linerel(4*ARROW_SIZE,0);
    linerel(-2*ARROW_SIZE,-1*ARROW_SIZE);
    linerel(0,2*ARROW_SIZE);
    linerel(2*ARROW_SIZE,-1*ARROW_SIZE);


cpp

initgraph
 Функция            Инициализирует графическую систему.

 Синтаксис          #include
                    void far  initgraph(int  far  *graphdriver,
                     int far *graphmode, char far *pathtodriver)

 Файл, содержащий   graphics.h
 прототип

 Описание           initgraph инициализирует графическую  систему
                    путем загрузки графического драйвера с диска
                    (или подтверждения работоспособности  заре-
                    гестрированного драйвера)  и переводит сис-
                    тему в графический режим.
                    Для того чтобы запустить графическую систе-
                    му, прежде всего вызовите функцию initgraph.
                    initgraph загружает  графический  драйвер и
                    переводит систему в графический режим.
                    Вы можете  указать  графической системе ис-
                    пользовать конкретный графический драйвер и
                    режим,  или,  чтобы она сама определила в процессе
                    работы привязанный к данной системе  видеоадаптер
                    и выбратла соответствующий драйвер. Если вы указа-
                    ли   initgraph   автоопределение   она   вызывает
                    detectgraph для выбора  графического  драйвера  и
                    режима.  initgraph  также  переустанавливает  все
                    графические параметры в их  значения  по  умолча-
                    нию (текущая  позиция, палитра, цвет, окно экрана,
                    и т. д.) и  переустанавливает  grapgresult  в  0.
                    Обычно  initgraph  загружает  графический драйвер
                    путем выделения памяти для  драйвера  (с  помощью
                    функции _graphgetmem), затем загружает соответст-
                    вующий файл .BGI с диска. В противоположность этой
                    схеме динамической загрузки , вы можете  присоеди-
                    нить файл графического драйвера (или несколько та-
                    ких  файлов)  непосредственно  выполняемым файлом.
                    Смотрите более  подробную  информацию  в  BGIOBJ.
                    pathodriver   определяeт   маршрут   по   которому
                    initgraph  будет  искать   графические   драйверы.
                    initgraph сначала ищет по маршруту,  определяемому
                    в  pathtodriver,  затем  ( если их там нет) ищет в
                    текущей     директории.     Следовательно,    если
                    pathtodriver равен NULL,  файлы  драйвера  (*.BGI)
                    должны  быть  в текущей директории. Таким же путем
                    settexstyle будет искать файлы (.CHR),  содержащие
                    шрифты.

                    *graphdriver -  целое,  которое  определяет исполь-
                    зуемый  графический  драйвер. Вы можете задать его
                    значение, используя константу graphics_driver пе-
                    речисляемого типа, определенного в  graphics.h  и
                    показанного в следующей таблице.
                    ________________________________________
                    graphics_drivers
                    константа           численное значение
                    __________________________________________

                    DETECT              0 (запрашивает
                                           автоопределе-
                                           ние драйвера)
                    CGA                 1
                    MCGA                2
                    EGA                 3
                    EGA64               4
                    EGAMONO             5
                    IBM8514             6
                    HERCMONO            7
                    ATT400              8
                    VGA                 9
                    PC3270              10
                    __________________________________________
                    *graphmode  -  целое,  которое определяет исходный
                    графический  режим  (если  *graphdriver  не  равен
                    DETECT, *graphmode  устанавливается  в  наивысшее
                    разрешение, допустимое для данного  драйвера).  Вы
                    можете задать значение *graphmode, используя конс-
                    танту  перечисляемого типа graphics_modes, опреде-
                    ленную в graphics.h и показанную в следующей таб-
                    лице:
 ---------------------------------------------------------------
 Графическ.  graphics   Знач.  Колонок     Палитра  Страниц
 драйвер     _modes            * столбцов
 ---------------------------------------------------------------
 CGA         CGAC0       0     320 x 200   C0          1
             CGAC1       1     320 x 200   C1          1
             CGAC2       2     320 x 200   C2          1
             CGAC3       3     320 x 200   C3          1
             CGAHI       4     640 x 200   2цвета      1

 MCGA        MCGAC0      0     320 x 200   C0          1
             MCGAC1      1     320 x 200   C1          1
             MCGAC2      2     320 x 200   C2          1
             MCGAC3      3     320 x 200   C3          1
             MCGAMED     4     640 x 200   2цвета      1
             MCGAHI      5     640 x 480   2цвета      1

 EGA         EGALO       0     640 x 200   16цветов    4
             EGAHI       1     640 x 350   16цветов    2

 EGA64       EGA64LO     0     640 x 200   16цветов    1

             EGA64HI     1     640 x 350   4 цвета     1

 EGA-        EGAMONOHI   3     640 x 350   2 цвета     1*
 MONO        EGAMONOHI   3     640 x 350   2 цвета     2**

 HERC        HERCMONOHI  0     720 x 348   2 цвета     2

 AT400       ATT400C0    0     320 x 200   C0          1
             ATT400C1    1     320 x 200   C1          1
             ATT400C2    2     320 x 200   C2          1
             ATT400C3    3     320 x 200   C3          1
             ATT400MED   4     640 x 200   2 цвета     1
             ATT400HI    5     640 x 400   2 цвета     1

 VGA         VGALO       0     640 x 200   16цветов    2
             VGAMED      1     640 x 350   16цветов    2
             VGAHI       2     640 x 380   16цветов    1

 PC3270      PC3270HI    0     720 x 350   2 цвета     1

 IBM8514     IBM8514HI   0     640 x 480   256цветов
             IBM8514LO   0    1024 x 768   256цветов

  *  64К на карте EGAMONO
 **  256К на карте EGAMONO
 --------------------------------------------------------------

                    Замечание:Основная причина вызова  непосредственно
                    detectgraph состоит в переопределении графического
                    режима,    который    detectgraph     рекомендовал
                    initgraph.

                    В приведенной таблице, элементы столбца  "Палитра"
                    C0,  C1, C2 и C3 относятся к четырем ранее опреде-
                    ленным четырехцветным палитрам, действительным для
                    CGA и совместимых систем. Вы можете  выбрать  цвет
                    фона(  элемент #0 ), но остальные цвета не меняют-
                    ся. Эти палитры подробно описаны в  главе  5  "Ви-
                    део-функции"  в "Руководстве пользователя по Turbo
                     C " и суммированы в следующей таблице:
     -----------------------------------------------------------
     Номер         Константа присвоенная значению пиксела
     палитры          1               2               3
     -----------------------------------------------------------
          0     CGA_LIGHTGREEN   CGA_LIGHTRED       CGA_YELLOW
          1     CGA_LIGHTCYAN    CGA_LIGHTMAGENTA   CGA_WHITE
          2     CGA_GREEN        CGA_RED            CGA_BROWN
          3     CGA_CYAN         CGA_MAGENTA        CGA_LIGHTGRAY
     ------------------------------------------------------------
                    После обращения к initgraph *graphdriver  устанав-
                    ливается   в   текущий   графический   драйвер,  а
                    *graphmode в текущий графический режим.

 Возвращаемое        initgraph всегда устанавливает внутренний
     значение        код ошибки. В случае успешного выполнения
                     код равен 0. В случае же ошибки
                     *graphdriver устанавливается в -2, -3, -4
                     или -5, и graphresult возвращает соответс-
                     твующие значения, перечисленные ниже:

                     -2    не может определить тип графической
                           карты (grNotDetected)
                     -3    не может найти файл драйвера
                           (grFileNotFound)
                     -4    неправильный драйвер (grInvalidDriver)
                     -5    недостаточно памяти для загрузки
                           драйвера (grNoLoadMem)

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ними,
                    оснащенных дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотри также        closegraph detectgraph getdefaultpalette
                     getdrivername getgraphmode getmoderange
                     graphdefault _graphgetmem graphresult
                     installuserdriver registerbgidriver
                     registerbgifont restorecrtmode
                     setgraphbufsize setgraphmode
 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* требуется автоопределение */
 int graphdriver = DETECT, gmode, errorcode;

 /* мнмцмализация графического режима */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 line(0,0,getmaxx(),getmaxy());

 getch();
 closegraph();
 return 0;


cpp

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

 Синтаксис          #include
                    int inport(int portid);

 Файл, содержащий   dos.h
 прототип

 Описание           inport работае аналогично команде процессорора
                    80x86 IN. Она считывает младший бай слова из вход-
                    ного порта, заданного параметром portid, а старший
                    байт из порта portid+2.

 Возвращаемое       Функции inport возвращают прочитанное значение.
 значение

 Переносимость      Функция уникальна для микропроцессоров семейства
                    8086.

 Смотри также       inportb outport outportb

 Пример:

 #include
 #include

 int main(void)
 {
    int result;
    int port = 0; /* последовательный порт 0 */
    result = inport(port);
    printf("Слово, считанное из порта %d = 0x%X\n",port,result);
    return 0;


cpp

inportb
 Функция            Считывает байт из порта.

 Синтаксис          #include
                    int inport(int port);

 Файл, содержащий   dos.h
 прототип

 Описание           inportb - это макрокоманда, которая считывает байт
                    из порта, определяемого параметром port. Если вы
                    подключили файл dos.h, то inportb  рассматривается
                    как  макрокоманда, которая расширяется до встроен-
                    ного кода. Если вы не включите dos.h, или отмените
                    определение  макрокоманды  с  помощью   инструкции
                    #undef, то получите функцию.

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

 Переносимость      Функция уникальна для микропроцессоров семейства
                    8086.

 Смотри также       inport outport outportb

 Пример:

 #include
 #include

 int main(void)
 {
    unsigned char result;
    int port = 0; /* последовательный порт 0 */
    result = inportb(port);
    printf("Байт, считанный из порта %d = 0x%X\n",port,result);
    return 0;


cpp

insline
 Функция            Вставляет пустую строку в текстовом окне.

 Синтаксис          #include
                    void insline(void);

 Файл, содержащий   conio.h
 прототип

 Описание           insline вставляет в текущем текстовом окне пустую
                    строку, пользуясь текущей позицией курсора и цве-
                    том фона. Все строки лежащие ниже данной прокру-
                    чиваются вниз. Самая нижняя строка исчезает.

                    insline используется в текстовом режиме.

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

 Переносимость      insline работает только на компьютерах совместимых
                    с IBM PC, соответствующая функция есть в Turbo Pas-
                    cal.

 Смотри также       clreol delline window
 Пример:

 #include

 int main(void)
 {
    clrscr();
    cprintf("Функция INSLINE вставляет строку, по текущему по-\r\n");
    cprintf("ложению курсора, использую текущий цвет фона.\r\n");
    cprintf("Все строки ниже ее, сдвигаются вниз. \r\n");
    cprintf("INSLINE работает в текущем активном \r\n");
    cprintf("текстовом окне. Для продолжения нажмите клавишу...");
    gotoxy(1,3);
    getch();
    insline();
    getch();
    return 0;


cpp

installuserdriver
 Функция            Добавляет дополнительные драйверы устройств
                    в таблицу драйверов устройств BGI.

 Синтаксис          #include
                    int far installuserdriver(char far *name,
                                      int huge(*detect)(void));

 Файл, содержащий   graphics.h
 прототип

 Описание           installuserdriver позволяет вам добавлять
                    дополнительные драйверы во встроенную BGI
                    таблицу. Параметр name - это имя (.BGI) фай-
                    ла нового драйвера, а параметр detect -
                    указатель на дополнительную функцию автооп-
                    ределения, которая может сопровождать новый
                    драйвер. Эта функция не берет никаких пара-
                    метров и возвращает целое значение.

                    Существует два способа использования драй-
                    веров, поставляемых продавцами. Предположим
                    у вас есть новая видеокарта, называющаяся
                    Spiffy Graphic Array (SGA) и производитель
                    этой SGA обеспечивает вас также BGI-драйве-
                    ром (SGA.BGI). Наипростейший способ исполь-
                    зования драйвера состоит в добавлении его с
                    помощью installuserdriver, а затем передаче
                    возвращаемого значения (присвоенный номер
                    драйвера) непосредственно в initgraph.

                    Другой, более общий способ использования
                    этого драйвера состоит во встраивании его в
                    функцию автоопределения, которая вызывается
                    initgraph как часть его драйвероопределяю-
                    щей логики (вероятно, производитель SGA дал
                    вам эту функцию автодетектирования). Когда
                    вы добавите драйвер с помощью installuser-
                    driver, вы передадите адрес этой функции
                    вместе с именем файла драйвера устройства.

                    После того как вы добавили имя файла драй-
                    вера и SGA-функцию автодетектирования, вы
                    вызываете initgraph и позволяете ему выпол-
                    нять нормальный процесс автодетектирования.
                    Перед тем как initgraph вызовет встроенную
                    функцию автодетектирования(detectgraph),
                    он вызовет SGA-функцию автодетектирования.
                    Если эта SGA-функция не находит аппаратные
                    средства SGA, она возвращает значение -11
                    (grError), а initgraph продолжает нормаль-
                    ный процесс автодетектирования, который мо-
                    жет включать вызов других поставленных про-
                    изводителем функций автодетектирования в
                    том порядке в каком они были добавлены).
                    Если же, однако, функция определит, что SGA
                    присутствует, она возвращает неотрицатель-
                    ный номер режима; затем initgraph находит и
                    загружает SGA.BGI, переводит аппаратные
                    средства в графический режим, рекомендуемый
                    функцией автодетектирования, и, наконец,
                    передает управление вашей программе.

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

 Возвращаемое       Значение возвращаемое installuserdriver -
     значение       это номер драйвера, который вы передадите
                    в initgraph для того, чтобы выбрать вручную
                    вновь добавленный драйвер.

 Переносимость      Функция уникальна для Turbo C++. Эта функция
                    пригодна только для компьютеров IBM PC и совмести-
                    мых  с  ними,  оснащенных  дисплейными адаптерами,
                    поддерживающими графический режим.

 Смотри также       initgraph registerbgidriver
 Пример:

 #include
 #include
 #include
 #include

 /* прототипы функций */
 int huge detectEGA(void);
 void checkerrors(void);

 int main(void)
 {
    int gdriver,gmode;
    /* инсталлировать драйвер, написанный пользователем */
    gdriver = installuserdriver("EGA",detectEGA);
    /* инициировать автоопределение */
    gdriver = DETECT;
    /* проверить на ошибки инсталляции */
    checkerrors();
    /* инициализация графики и локальных переменных */
    initgraph(&gdriver,&gmode,"");
    /* проверить на ошибки иннициализации */
    checkerrors();
    /* нарисовать линию */
    line(0,0,getmaxx(),getmaxy());
    /* очистка */
    getch();
    closegraph();
    return 0;
 }
 /* определение платы EGA или VGA */
 int huge detectEGA(void)
 {
    int driver, mode, sugmode = 0;
    detectgraph(&driver,&mode);
    if((driver == EGA) || (driver == VGA))
        /* вернуть предполачаемый номер режима */
        return sugmode;
    else
       /* вернуть код ошибки */
       return grError;
 }
 /* проверка и сообщение о появлении ошибок */
 void checkerrors(void)
 {
    int errorcode;
    errorcode = graphresult();
    if(errorcode != grOk)
    {
       printf("Ошибка графики %s\n",grapherrormsg(errorcode));
       printf("Для завершения нажмите любую клавишу... ");
       getch();
       exit(1);
    }
 }

cpp

installuserfont
 Функция            Загружает файл со шрифтом (.CHR), который не
                    встроен в BGI-систему.

 Синтаксис          #include
                    int far installuserfont(char far *name);

 Файл, содержащий   graphics.h
 прототип

 Описание           name - полное имя шрифтового файла, содер-
                    жащего штриховые шрифты. Одновременно может
                    быть добавлено до двадцати шрифтов.

 Возвращаемое       installuserfont возвращает ID-номер шриф-
 значение           та, который затем может передаваться в
                    settextstyle для выбора соответствующего
                    шрифта. Если внутренняя таблица шрифтов за-
                    полнена, то возвращаемое значение равно -11
                    (grError).

 Переносимость      Функция уникальна для Turbo C++. Эта функция
                    пригодна только для компьютеров IBM PC и совмести-
                    мых  с  ними,  оснащенных  дисплейными адаптерами,
                    поддерживающими графический режим.

 Смотри также       settextstyle
 Пример:

 #include
 #include
 #include
 #include

 /* прототипы функций */
 void checkerrors(void);

 int main(void)
 {
    int gdriver = DETECT,gmode;
    int userfont;
    int midx,midy;

    /* инициализация графики и локальных переменных */
    initgraph(&gdriver,&gmode,"");
    midx = getmaxx()/2;
    midy = getmaxy()/2;
    /* проверить на ошибки инициализации */
    checkerrors();
    /* инсталлировать шрифт, написанный пользователем */
    userfont = installuserfont("USER.CHR");
    /* проверить на ошибки инсталляции */
    checkerrors();
    /* выбрать пользовательский шрифт */
    settextstyle(userfont,HORIS_DIR,4);
    /* вывести некоторый текст */
    outtextxy(midx,midy,"Тест");
    /* очистка */
    getch();
    closegraph();
    return 0;
 }
 /* проверка и сообщение о появлении ошибок */
 void checkerrors(void)
 {
    int errorcode;
    errorcode = graphresult();
    if(errorcode != grOk)
    {
       printf("Ошибка графики %s\n",grapherrormsg(errorcode));
       printf("Для завершения нажмите любую клавишу... ");
       getch();
       exit(1);


cpp

int86
 Функция            Генерирует программное прерывание процессора 8086.

 Синтаксис          #include
                    int int86(int intr_num, union REGS *inregs,
                              union REGS *outregs);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция генерирует программное прерывание микро-
                    процессора 8086, причем номер прерывания опреде-
                    ляется аргументом intr_num. Перед выполнением пре-
                    рывания, функция копируют значения регистров из
                    объединения inregs в сами регистры.

                    После возврата из прерывания, функция копируют те-
                    кущие значения регистров в параметр outregs, а ста-
                    тус флажка системного переноса в поле x.cflag па-
                    раметра  outregs,  а  содержимое регистра флагов в
                    поле x.flags. Если флажок переноса установлен, это
                    обычно означает что произошла ошибка.

                    Примечание: параметры inregs и outregs могут ука-
                    зывать на одну и туже структуру.

 Возвращаемое       Функция int86 возвращает значение регистра AX после
 значение           завершения прерывания. Если флажок переноса уста-
                    новлен (outregs-->x.cflag!=0), то есть произошла
                    ошибка, данная функция присваивает глобальной пе-
                    ременной _doserrno код ошибки.

 Переносимость      Функция уникальна семейства микропроцессоров 8086.

 Пример:

 #include
 #include
 #include

 #define VIDEO 0x10

 void movetoxy(int x, int y)
 {
    union REGS regs;
    regs.h.ah = 2; /* установить позицию курсора */
    regs.h.dh = y;
    regs.h.dl = x;
    regs.h.bh = 0;  /* страница 0 */
    int86(VIDEO, ®s, ®s);
 }

 int main(void)
 {
    clrscr();
    movetoxy(35,10);
    printf("Привет\n");
    return 0;


cpp

int86x
 Функция            Интерфейс с программными прерываниями процессора
                    8086.

 Синтаксис          #include
                    int int86(int intr_num, union REGS *inregs,
                        union REGS *outregs, struct SREGS *segregs);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция генерирует программное прерывание микро-
                    процессора 8086, причем номер прерывания опреде-
                    ляется аргументом intr_num. Перед выполнением пре-
                    рывания, функция копирует значения регистров из
                    объединения inregs в сами регистры.

                    Кроме этого, int86 копирует значения segregs->x.ds
                    и segregs->x.es в соответствующие регистры, перед
                    вызовом прерывания. Эта возможность позволяет
                    программам использовать дальние указатели или
                    большие модели памяти для указания используемых
                    для прерывания сегментов.

                    После возврата из прерывания, функция копируют те-
                    кущие значения регистров в параметр outregs, а ста-
                    тус флажка системного переноса в поле x.cflag па-
                    раметра outregs. Если флажок переноса установлен,
                    это означает что произошла ошибка. Кроме этого,
                    данная функция восстанавливает содержимое DS и за-
                    полняет поля segregs->es и segregs->ds соответст-
                    вующими значениями.

                    int86x позволяет вам генерировать прерывание кото-
                    рое получает значение в DS отличное от адреса сег-
                    мента данных по умолчанию, и/или которое получает
                    аргумент в регистре ES.

                    Примечание: параметры inregs и outregs могут ука-
                    зывать на одну и туже структуру.

 Возвращаемое       Функция int86 возвращает значение регистра AX после
 значение           завершения прерывания. Если флажок переноса уста-
                    новлен (outregs-->x.cflag!=0), то есть произошла
                    ошибка, данная функция присваивает глобальной пе-
                    ременной _doserrno код ошибки.

 Переносимость      Функция уникальна для семейства микропроцессоров
                    8086.

 Смотри также       bdos bdosptr geninterrupt intdos intdosx
                    int6, intr segread

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    char filename[80];
    union REGS inregs,outregs;
    struct SREGS segregs;
    printf("Введите имя файла:");
    gets(filename);
    inregs.h.ah = 0x43;
    inregs.h.al = 0x21;
    inregs.x.dx = FP_OFF(filename);
    segregs.ds = FP_SEG(filename);
    int86x(0x21,&inregs,&outregs,&segregs);
    printf("Атрибуты файла: %X\n",outregs.x.cx);
    return 0;


cpp

intdos
 Функция            Интерфейс с функциями DOS.

 Синтаксис          #include
                    int intdos(union REGS *inregs,
                                union REGS *outregs);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция генерирует прерывание DOS 0x21 для запуска
                    заданной функции DOS. Значение параметра
                    inregs->h.al определяет функцию DOS.

                    После возврата из прерывания, функция копируют те-
                    кущие значения регистров в параметр outregs, а ста-
                    тус флажка системного переноса в поле x.cflag па-
                    раметра outregs. Если флажок переноса установлен,
                    это означает что произошла ошибка.

                    Примечание: параметры inregs и outregs могут ука-
                    зывать на одну и туже структуру.

 Возвращаемое       После завершения вызова подпрограммы DOS, функция
 значение           intdos возвращает значение регистра AX. Если
                    флажок переноса установлен (outregs-->x.cflag
                    !=0), что означает ошибку, переменная _doserrno
                    получает в качестве значения код ошибки.

 Переносимость      Функция уникальна для DOS.

 Смотрите также     bdos bdosptr geninterrupt int6, int6x
                    intdosx intr
 Пример:
       #include
       #include
       /* удаление файла. При успешном завершении возвращает 0, иначе
          ненулевое значение */
       int delete_file(char near *filename)
       {
          union REGS regs;
          int ret;
          regs.h.ah = 0x41; /* удаление файла  */
          regs.x.dx = (unsigned) filename;
          ret = intdos(®s, ®s);
          /* if carry flag is set, there was an error */
          return(regs.x.cflag ? ret : 0);
       }
       int main(void)
       {
          int err;
          err = delete_file("NOTEXIST.$$$");
          printf("Able to delete NOTEXIST.$$$: %s\n",
                  (!err) ? "YES" : "NO");
      }
 Вывод:

       Able to delete NOTEXIST.$$$: NO


cpp

intdosx
 Функция            Интерфейс с функциями DOS.

 Синтаксис          #include
                    int int86(int intr_num, union REGS *inregs,
                        union REGS *outregs, struct SREGS *segregs);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция генерирует программное прерывание DOS 0x21
                    для вызова необходимой функции DOS. Значение
                    inregs->h.al определяет требуемую функцию.

                    Кроме этого, intdosx копирует значения
                    segregs->x.ds и segregs->x.es в соответствующие
                    регистры, перед вызовом прерывания. Эта возможность
                    позволяет программам использовать дальние указатели
                    или большие модели памяти для указания используемых
                    для прерывания сегментов.

                    После возврата из прерывания, функция копируют те-
                    кущие значения регистров в параметр outregs, а ста-
                    тус флажка системного переноса в поле x.cflag па-
                    раметра outregs. Если флажок переноса установлен,
                    это означает что произошла ошибка. Кроме этого,
                    данная функция восстанавливает содержимое DS и за-
                    полняет поля segregs->es и segregs->ds соответст-
                    вующими значениями.

                    intdosx позволяет вам вызывать функцию DOS, кото-
                    рая получает значение в DS, отличное от адреса сег-
                    мента данных по умолчанию, и/или которое получает
                    аргумент в регистре ES.

                    Примечание: параметры inregs и outregs могут ука-
                    зывать на одну и туже структуру.

 Возвращаемое       Функция intodsx возвращает значение регистра AX после
 значение           завершения прерывания. Если флажок переноса уста-
                    новлен (outregs-->x.cflag!=0), то есть произошла
                    ошибка, данная функция присваивает глобальной пе-
                    ременной _doserrno код ошибки.

 Переносимость      Функция уникальна для DOS.

 Смотри также       bdos bdosptr geninterrupt intdos int6x
                    int6, intr segread

 Пример:
       #include
       #include
       /* удаление файла. При успешном завершении возвращает 0, иначе
          ненулевое значение */
       int delete_file(char near *filename)
       {
          union REGS regs;
          int ret;
          regs.h.ah = 0x41; /* удаление файла  */
          regs.x.dx = (unsigned) filename;
          ret = intdos(®s, ®s);
          /* if carry flag is set, there was an error */
          return(regs.x.cflag ? ret : 0);
       }
       int main(void)
       {
          int err;
          err = delete_file("NOTEXIST.$$$");
          printf("Able to delete NOTEXIST.$$$: %s\n",
                  (!err) ? "YES" : "NO");

      }
 Вывод:

       Able to delete NOTEXIST.$$$: NO


cpp

intr
 Функция            Альтернативный интерфейс к прерываниям микро-
                    процессора 8086.

 Синтаксис          #include
                    void intr(int intr_num, struct REGPACK *preg);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция intr поддерживает альтернативный интерфейс
                    для выполнения программных прерываний. Она генери-
                    рует прерывание микропроцессора 8086, заданное
                    аргументом intr num.

                    Функция intr перед выполнением прерывания копирует
                    значения регистров из структуры REGPACK *preg
                    непосредственно в регистры. После завершения пре-
                    рывания функция intr копирует текущее значение ре-
                    гистров в параметр preg. Значения флажков остаются
                    законсервированными.

                    Функции intr передаются следующие параметры:

                    intr num - номер выполняемого прерывания;

                    preg - адрес структуры, содержащий:

                       (a)- значения регистров перед вызовом;
                       (b)- значения регистров после вызова прерыва-
                            ния.

                    Структура 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;
                       };

 Возвращаемое       Никакое значение не возвращается. Структура
 значение           REGPACK *streg содержит значения регистров после
                    вызова прерывания.

 Переносимость      Функция уникальна семейства микропроцессоров 8086.

 Смотрите также     geninterrupt int6, int6x intdos intdosx

 Пример:

 #include
 #include
 #include
 #include

 #define CF 1  /* флаг переноса */

 int main(void)
 {
    char directory[80];
    struct REGPACK reg;
    printf("Введите директорию, куда перейти:");
    gets(directory);
    reg.r_ax = 0x3b << 8;
    reg.r_dx = FP_OFF(directory);
    reg.r_ds = FP_SEG(directory);
    intr(0x21,®);
    if(reg.r_flags & CF)
       printf("Ошибка при смене директории\n");
    getcwd(directory);
    printf("Текущая директория: %s",directory);
    return 0;


cpp

ioctl
 Функция            Управление устройствами ввода/вывода.

 Синтаксис          int ioctl(int handle, int func[, int *argdx,
                    int argcx]);

 Файл, содержащий   io.h
 прототип

 Описание           Данная функция представляет собой непосредственный
                    интерфейс для вызова функции DOS 0x44 (IOCTL).

                    Выполняемая функция зависит от значения параметра
                    func следующим образом:

                    0- получение информации об устройстве;

                    1- установка информации об устройстве (в параметр
                       argdx);

                    2- считывает argcx байт и помещает их по адресу,
                       указанному в argdx;

                    3- записывает argcx байт из адреса, на который
                       указывает argdx;

                    4- также, как и в ситуации 2, исключая то, что па-
                       раметр handle трактуется, как номер дисковода
                       (0= по умолчанию, 1=A, и т.д.);

                    5- также, как и в ситуации 3, за исключением того,
                       что параметр handle трактуется, как номер дис-
                       ковода(0= по умолчанию, 1=A, и т.д.);

                    6- получает статус ввода;

                    7- получает статус вывода;

                    8- тест на сменность; только для версий
                       DOS 3.0;

                    11- устанавливает число повторов при конфликте
                        разделения файлов; только для версий DOS 3.0

                    Функция ioctl может быть использована для получе-
                    ния информации о каналах устройств.

                    Могут использоваться также обычные файлы, но для
                    них можно использовать только func равное 0,6 и 7.
                    Все остальные вызовы будут возвращать для файлов
                    ошибочное значение EINVAL.

                    Смотрите более детальную информацию об аргументах
                    или возвращаемых значениях в "Справочном руководст-
                    ве программиста DOS" - в описании системного
                    вызова 0x44.

                    Аргументы argdx и argcx - необязательны.

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

 Возвращаемое       Для значений параметра func - 0 или 1 возвращаемое
 значение           значение представляет собой информацию об устрой-
                    стве (в часности значение регистра DX, получаемое
                    при вызове IOCTL).

                    Для значений func от 2 до 5, возвращаемое значе-
                    ние - это количество реально переданных байтов.

                    Для значениея func 6 или 7, возвращаемое значе-
                    ние - это статус устройства.

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

                    EINVAL - неверный аргумент;
                    EBADF  - неверный номер файла;
                    EINVDAT - неверные данные.

 Переносимость      Функция ioctl поддерживается на системах UNIX, но
                    не с описанными выше параметрами. На системе UNIX
                    версии 7 и системе SYSTEM III применение функции
                    ioctl различно. Вызовы функции ioctl не переносимы
                    на системах UNIX и очень редко переносятся с одной
                    системы DOS на другую.

                    В версиях MS-DOS 3.0 параметр func разширен двумя
                    значениями: 8 и 11.

 Пример:

 #include
 #include
 #include

 int main(void)
 {
    int stat;
    /* функция 8 используется, чтобы определить, является ли
       диск, в текущем устройстве сменным */
          stat = ioctl(0, 8, 0, 0);
          printf("Диск %c %s сменный\n", getdisk() + 'A',
                  (stat == 0) ? "" : "не");


cpp

isalnum
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isalnum(int c);

 Файл, содержащий   ctype.h
 прототип

 Описание           isalnum - это макрокованда, которая классифицирует
                    целые значения в коде ASCII, путем просмотра таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(c) равно true или c = EOF.

 Возвращаемое       isalnum возвращает ненулевое значение если c -
 значение           это буква (A-Z или a-z), или цифра (0-9).

 Переносимость      isalnum доступна в системах UNIX.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isalnum(c))
       printf("%c - alphanumeric\n",c);
    else
       printf("%c - isn't alphanumeric\n",c);
    return 0;


cpp

isalpha
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isalpha(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isalpha - это макрокованда, которая классифицирует
                    целые  значения в коде ASCII, путем просмотра таб-
                    лицы. При true она возвращает ненулевое значение и
                    0 при false. Она определена только в  том  случае,
                    если isascii(ch) равно true или ch = EOF.

                    Вы  можете вместо макрокоманды, использовать функ-
                    цию, если воспользуетесь директивой #undef.

 Возвращаемое       isalpha возвращает ненулевое значение если ch -
 значение           это буква (A-Z или a-z).

 Переносимость      isalpha доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isalpha(c))
       printf("%c - alphabetic\n",c);
    else
       printf("%c - isn't alphabetic\n",c);
    return 0;


cpp

isascii
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isascii(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isascii - это макрокованда, которая классифицирует
                    целые  значения  в коде ASCII, просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false.

                    isascii определена для всех целых значений.

 Возвращаемое       isascii возвращает ненулевое значение если младший
 значение           байт ch лежит в диапазоне от 0 до 127 (0x00-0x7F)

 Переносимость      isascii доступна в системах UNIX.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isascii(c))
       printf("%c - is ascii\n",c);
    else
       printf("%c - isn't ascii\n",c);
    return 0;


cpp

isatty
 Функция            Производит проверку на тип устройства.

 Синтаксис          #include
                    int isatty(int handle);

 Файл, содержащий   io.h
 прототип

 Описание           Функция isatty определяет, какой из перечисленных
                    ниже типов устройств идентифицирует параметр
                    handle:

                    - терминал;
                    - консоль;
                    - принтер;
                    - последовательный порт.

 Возвращаемое       Если устройство является символьным, функция
 значение           isatty возвращает ненулевое значение, если данное
                    устройство не относится к такому типу, функция
                    isatty возвращает 0.

 Переносимость      isatty уникальна для DOS.

 Пример:

 #include
 #include

 int main(void)
 {
    int handle;
    handle = fileno(stdout);
    if(isatty(c))
       printf("Дескриптор %d - относится к устройству\n",handle);
    else
       printf("Дескриптор %d - не относится к устройству\n",handle);
    return 0;


cpp

iscntrl
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int iscntrl(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           iscntrl - это макрокованда, которая классифицирует
                    целые значения в коде ASCII, просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

                    Вы  можете вместо макрокоманды, использовать функ-
                    цию, если воспользуетесь директивой #undef.

 Возвращаемое       iscntrl возвращает ненулевое значение если ch -
 значение           это символ удаления или обычный управляющий символ
                    (0x7F или 0x00-0x1F)

 Переносимость      iscntrl доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(iscntrl(c))
       printf("%c - управляющий символ\n",c);
    else
       printf("%c - не является управляющим символом\n",c);
    return 0;


cpp

isdigit
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isdigit(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isdigit - это макрокованда, которая классифицирует
                    целые значения в коде ASCII, просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

                    Вы  можете вместо макрокоманды, использовать функ-
                    цию, если воспользуетесь директивой #undef.

 Возвращаемое       isdigit возвращает ненулевое значение если ch -
 значение           это цифра ('0'-'9')

 Переносимость      isdigit доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(iscntrl(c))
       printf("%c - цифра\n",c);
    else
       printf("%c - не является цифрой\n",c);
    return 0;


cpp

isgraph
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isgraph(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isgraph - это макрокованда, которая классифицирует
                    целые значения в коде ASCII, просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

                    Вы  можете вместо макрокоманды, использовать функ-
                    цию, если воспользуетесь директивой #undef.

 Возвращаемое       isgraph возвращает ненулевое значение если ch -
 значение           печатаемый символ (аналогично isprint), исключая
                    символ пробела.

 Переносимость      isgraph доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isgraph(c))
       printf("%c - графический символ\n",c);
    else
       printf("%c - не является графическим символом\n",c);
    return 0;


cpp

islower
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int islower(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           islower - это макрокоманда, которая классифицирует
                    целые значения в коде ASCII, просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

                    Вы  можете вместо макрокоманды, использовать функ-
                    цию, если воспользуетесь директивой #undef.

 Возвращаемое       islower возвращает ненулевое значение если ch -
 значение           это буква в нижнем регистре ('a'-'z')

 Переносимость      isdigit доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(islower(c))
       printf("%c - буква в нижнем регистре\n",c);
    else
       printf("%c - не является буквой в нижнем регистре\n",c);
    return 0;


cpp

isprint
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isprint(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isprint - это макрокованда, которая классифицирует
                    целые значения в коде ASCII просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

                    Вы  можете вместо макрокоманды, использовать функ-
                    цию, если воспользуетесь директивой #undef.

 Возвращаемое       isprint возвращает ненулевое значение если ch -
 значение           это печатаемый символ (0x20 - 0x7E)

 Переносимость      isprint доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isprintt(c))
       printf("%c - печатаемый символ\n",c);
    else
       printf("%c - не является песатаемым символом\n",c);
    return 0;


cpp

ispunct
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int ispunct(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           ispunct - это макрокоманда, которая классифицирует
                    целые значения в коде ASCII просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

                    Вы  можете вместо макрокоманды, использовать функ-
                    цию, если воспользуетесь директивой #undef.

 Возвращаемое       ispunct возвращает ненулевое значение если ch -
 значение           это символ разделитель (iscntrl или isspace)

 Переносимость      ispunct доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isprintt(c))
       printf("%c - символ разделитель\n",c);
    else
       printf("%c - не является символом разделителем\n",c);
    return 0;


cpp

isspace
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isspace(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isspace - это макрокоманда, которая классифицирует
                    целые значения в коде ASCII просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

 Возвращаемое       isspace возвращает ненулевое значение если ch -
 значение           это пробел, возврат каретки, переход на новую стро-
                    ку, вертикальная табуляция или новая страница
                    (0x09-0x0D, 0x20)

 Переносимость      isspace доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isspace(c))
       printf("%c - символ разделитель\n",c);
    else
       printf("%c - не является символом разделителем\n",c);
    return 0;


cpp

isupper
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isupper(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isupper - это макрокоманда, которая классифицирует
                    целые значения в коде ASCII просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

 Возвращаемое       isupper возвращает ненулевое значение если ch -
 значение           это буква в верхнем регистре (A-Z).

 Переносимость      isupper доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isupper(c))
       printf("%c - буква в верхнем регистре\n",c);
    else
       printf("%c - не является буквой в верхнем регистре\n",c);
    return 0;


cpp

isxdigit
 Функция            Макро классификации символов.

 Синтаксис          #include
                    int isxdigit(int ch);

 Файл, содержащий   ctype.h
 прототип

 Описание           isxdigit - это макрокованда, которая классифицирует
                    целые значения в коде ASCII просмотром таблицы.
                    При true она возвращает ненулевое значение и 0 при
                    false. Она определена только в том случае, если
                    isascii(ch) равно true или ch = EOF.

 Возвращаемое       isxdigit возвращает ненулевое значение если ch -
 значение           это шестнадцатеричная цифра (0-9, A-F, a-f)

 Переносимость      isxdigit доступна в системах UNIX и поддерживается
                    стандартом ANSI C.

 Пример:

 #include
 #include

 int main(void)
 {
    char c = 'C';
    if(isxdigit(c))
       printf("%c - шестнадцатеричная цифра\n",c);
    else
       printf("%c - не является шестнадцатеричной цифрой\n",c);
    return 0;


cpp

itoa
 Функция            Преобразует  целое значение в строку символов.

 Синтаксис          #include
                    char *itoa(int value, char * string, int radix);

 Файл, содержащий   stdlib.h
 прототип

 Описание           Эта функция преобразует значение value в строку
                    символов, оканчивающуюся нулем, и записывают
                    результат в параметр string. Для функции itoa
                    значение value - целое.

                    Параметр radix определяет базис, который будет ис-
                    пользован при преобразовании значения value; он
                    должен лежать между 2 и 36 (включительно). Eсли
                    значение value отрицательно, и значение radix 10,
                    первый символ строки string - знак минус (-).

                    Примечание:Пространство, выделяемое для параметра
                    string должно быть достаточным, чтобы записать
                    полученную в результате работы функции строку,
                    включая нулевой байт (\0). Функция itoa может
                    возвращать до 17 байтов;

 Возвращаемое       Функция возвращает указатель на строку string,
 значение           причем завершения по ошибке не существует.

 Переносимость      itoa уникальна для DOS.

 Смотри также       itoa ultoa
 Пример:

 #include
 #include

 int main(void)
 {
    int number = 12345;
    char string[25];
    itoa(number,string,10);
    printf("Целое: %d, строка: %s\n",number,string);
    return 0;


cpp

kbhit
 Функция            Производит проверку: есть ли символы в буфере кла-
                    виатуры

 Синтаксис          #include
                    int kbhit(void);

 Файл, содержащий   conio.h
 прототип

 Описание           Функция kbhit проверяет, была ли нажата какая-либо
                    клавиша клавиатуры. Нажатая клавиша может быть
                    определена с помощью функций getch или getche.

 Возвращаемое       Если какая-либо клавиша была нажата, функция
 значение           kbhit возвращает ненулевое значение, если нет, она
                    возвращает 0.

 Переносимость      kbhit уникальна для DOS.

 Смотрите также     getch getche

 Пример:

 #include

 int main(void)
 {
    cprintf("Для продолжения нажмите любую клавишу:");
    while(!kbhit())  /* пустой цикл */
    cprintf("\r\nБыла нажата клавиша ");
    return 0;


cpp

keep
 Функция            Осуществляет выход в DOS из программы, оставляя,
                    тем не менее еe резидентной.

 Синтаксис          #include
                    void keep(unsigned char status, unsigned size);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция keep осуществляет выход в DOS со статусом
                    выхода в переменной status. Текущая программа,
                    тем не менее, остается резидентной. Длина прог-
                    раммы устанавливается в size параграфов, и оста-
                    ток памяти освобождается. Функция keep может быть
                    использована для установки резидентных программ
                    (TSR). Функция keep использует функцию DOS 0x31.

 Возвращаемое       Отсутствует.
 значение

 Переносимость      Функция уникальна для DOS.

 Смотрите также     abort exit

 Пример:

 /* ПРИМЕЧАНИЕ:
    Это программа обработки прерывания. Если вы попытаетесь
    откомпилировать ее с включенной проверкой переполнения
    стека, то вы не !!! получите правильно работающей прог-
    раммы. Формула использованая в этой функции, вычисляю-
    щая число параграфом не обязательно будет работать во
    всех случаях. Используйте с осторожностью! Резидентные
    программы являются довольно сложными продуктами, и для
    них не обеспечивается дополнительная поддержка. Допол-
    нительную информацию вы найдете в технической докумен-
    тации по DOS */

 #include
 /* прерывание по таймеру */
 #define INTR 0x1c
 /* атрибут экрана (голубой или серый) */
 #define ATTR 0x7900
 /* уменьшить размер стека и локальной памяти, чтобы
    сделать программу меньше */
 extern unsigned _heaplen = 1024;
 extern unsigned _stklen = 512;

 void interrupt (*oldhandler)();

 void interrupt handler(void)
 {
    unsigned int (far *screen)[80];
    static int count;
    /* для цветного адаптера адрес видеопамяти
       B800:0000, для монохромного B000:0000 */
    screen = MK_FP(0x8000,0);
    /* увеличить счетчик, и взять его по модклю 10 */
    count++;
    count %= 10;
    /* вывести число на экран */
    screen[0][79] = count+'0'+ATTR;
    /* вызвать старую функцию обработки прерывания */
    oldhandler();
 }
 int main(void)
 {
    /* получить адрес текущей программы обработки прерываний
       по таймеру */
    oldhandler = getvect(INTR);
    /* установить свою программу обработки прерывания */
    setvect(INTR,handler);
    /* _psp содержит начальный адрес области памяти, в которой
       расположена ваша программа. Вершина стека определяет
       конец вашей программы. _SS и SP вместе дают конец стека.
       Возможно вам будет нужно добавить локальную память для
       собственных нужд, что делается следующим образом:
       (_SS + ((_SP + локальная память)/16) - _psp) */

    keep(0,_SS+(_SP/16)-_psp);
    return 0;


cpp

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

 Синтаксис          #include
                    long int labs(long int x);

 Файл, содержащий   math.h, stdlib.h
 прототип

 Описание           labs вычисляет абсолютное значение
                    параметра х.

 Возвращаемое       Возвращает абсолютное значение х.

 Переносимость      labs доступна в системах UNIX и
                    поддерживается стандартом ANSI C.

 Смотрите также     abs cabs fabs

 Пример:

 #include
 #include

 int main(void)
 {
    long result;
    long x = -12345678L;
    result = labs(x);
    printf("число: %ld, абсолютное значение :%ld\n",
          x,result);
    return 0;


cpp

ldexp
 Функция            Вычисляет значение x * 2^exp.

 Синтаксис          #include
                    double ldexp(double x, int exp);

 Файл, содержащий   math.h
 прототип

 Описание           ldexp вычисляет значение двойной
                    точности x*2^exp.

 Возвращаемое       При успешном завершении ldexp возвращает
 значение            вычисленное значение x*2^exp.

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

 Переносимость      Функция ldexp поддерживается в системе
                    UNIX и стандартом ANSI C.

 Смотрите также     exp frexp modf

 Пример:

 #include
 #include

 int main(void)
 {
    double valus;
    double x = 2;
    /* ldexp возводит 2 в степень 3, и затем умножает
       результат на 2 */
    value = ldexp(x);
    printf("значение ldexp = %lf\n",value);
    return 0;


cpp

ldiv
 Функция            Деление двух длинных целых, возвращает
                    частное и остаток.

 Синтаксис          #include
                    ldiv_t ldiv(long int numer, long int
                    denom);

 Файл содержащий    stdlib.h
 прототип

 Описание           ldiv делит два длиных целых и возвращает
                    частное и остаток в структуре типа
                    ldiv_t. Параметры numer и denom - это
                    частное и делитель соответственно.  Тип
                    ldiv_t определен в файле stdlib.h (с
                    помощью оператора typedef) следующим
                    образом:

                    typedef struct {
                      long int quot;         /* частное */
                      long int rem;          /* остаток */
                    } ldiv_t;

 Возвращаемое       ldiv возвращает структуру, элементы

 Переносимость      ldiv поддерживается стандартом ANSI C.

 Смотрите также     div

 Пример:

 #include
 #include

 int main(void)
 {
    ldiv_t lx;
    lx = ldiv(100000L, 30000L);
    printf("100000 div 30000 = %ld, остаток = %ld\n",
                                          lx.quot, lx.rem);
    return 0;


cpp

lfind
 Функция            Выполняет линейный поиск.

 Синтаксис    #include
              void *lfind(const void *key, const void *base,
              size_t *num, size_t width,
              int(*fcmp)(const void *,const void *));

 Файл, содержащий   stdlib.h
 прототип

 Описание           lfind производит линейный поиск по
                    значению key в массиве последовательных
                    записей. Она использует определенную
                    пользователем программу сравнения
                    (fcmp).

                    Массив описывается как как содержащий
                    *num записей, каждая шириной width
                    байт. base указывает начало массива.

                    lfind возвращает адрес первого, совпада-
                    ющего с искомым, элемента.
                    Если совпаданий не обнаружено, то lfind
                    возвращает NULL. Подпрограмма сравнения
                    должна возвращать 0 если *elem1 ==
                    *elem2, и ненулевое значение в противном
                    случае.(elem1 и elem2 это ее параметры).

 Переносимость      lfind уникальна для DOS.

 Смотрите также     bsearch lsearch qsort

 Пример:

 #pragma warn -rpt
 #include
 #include

 int compare(int *x,int *y)
 {
    return(*x-*y);
 }
 int main(void)
 {
    int array[5] = {35,87,46,99,12};
    int key;
    int *result;
    key = 99;
    result = lfind(&key,array,5,sizeof(int),compare);
    if(result)
       printf("Число %d найдено",key);
    else
       printf("Число %d ненайдено",key);
    return 0;


cpp

line
 Функция            Рисует линию между двумя указанными
                    точками.

 Синтаксис          #include
                    void far line(int x1, int y1, int x2,
                    int y2);

 Файл, содержащий   graphics.h
 прототип

 Описание           line рисует линию, используя текущие
                    цвет, тип и толщину линий, между двумя
                    точками, определенными как (x1, y1) и
                    (x2, y2), не изменяя текущую позицию
                    (CP).

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

 Переносимость      Функция уникальна для Turbo C++. Она
                    работает только на компьютерах IBM PC и
                    совместимых с ними, оснащенных дисплей-
                    ными адаптерами, поддерживающими графи-
                    ческий режим.

 Смотрите также     getlinesettings linerel lineto
                    setcolor setlinestyle setwritemode
 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 int xmax,ymax;

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 setcolor(getmaxcolor());
 xmax = getmaxx();
 ymax = getmaxy();

 /* нарисовать диагональную линию */
 line(0,0,xmax,ymax);

 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

linerel
 Функция            Рисует линию на заданное расстояние от
                    текущей позиции (CP).

 Синтаксис          #include
                    void far linerel(int dx, int dy);

 Файл, содержащий   graphics.h
 прототип

 Описание           linerel рисует линию от CP до точки,
                    находещейся на расстоянии (dx, dy) от
                    CP. CP перемещается на CP + (dx,dy).

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

 Переносимость      Функция уникальна для Turbo C++. Она
                    работает только на компьютерах IBM PC и
                    совместимых с ними, оснащенных
                    дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотрите также     getlinesettings line lineto setcolor                    setlinestyle setwritemode

 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 char msg[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 /* переместить текущую позицию (CP) в точку (20,30) */
 moveto(20,30);
 /* создать строку с сообщением */
 sprintf(msg," (%d,%d)",getx(),gety());
 outtextxy(20,30,msg);
 /* нарисовать линию относительно текущей позиции */
 linerel(100,100);
 /* создать строку с сообщением */
 sprintf(msg," (%d,%d)",getx(),gety());
 outtext(msg);

 /* очистка */

 getch();
 closegraph();
 return 0;


cpp

lineto
 Функция            Рисует линию от текущей позиции (CP)
                    в точку с координатами (x,y).

 Синтаксис          #include
                    void far lineto(int x, int y);

 Файл, содержащий   graphics.h
 прототип

 Описание           lineto рисует линию от CP до точки с
                    координатами (x,y), затем переносит (CP)
                    в (x,y).
 Возвращаемое       Нет.
 значение

 Переносимость      Функция уникальна для Turbo C++. Она
                    работает только на компьютерах IBM PC
                    и совместимых с ними, оснащенных
                    дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотри также       getlinesettings line linerel setcolor
                    setlinestyle setvisualpage setwritemode
 Пример:

 #include
 #include
 #include
 #include

 int main(void)
 {
 /* Запрос автоопределения */
 int graphdriver = DETECT, gmode, errorcode;
 char msg[80];

 /* инициализация графики и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 /* переместить текущую позицию (CP) в точку (20,30) */
 moveto(20,30);
 /* создать строку с сообщением */
 sprintf(msg," (%d,%d)",getx(),gety());
 outtextxy(20,30,msg);
 /* нарисовать линию относительно текущей позиции */
 lineto(100,100);
 /* создать строку с сообщением */
 sprintf(msg," (%d,%d)",getx(),gety());
 outtext(msg);

 /* очистка */
 getch();
 closegraph();
 return 0;


cpp

localeconv
 Функция            Возвращает указатель на текущую
                    структуру locale.

 Синтаксис          #include
                    struct lconv *localeconv(void);

 Файл, содержащий   locale.h
 прототип

 Описание           Эта функция устанавливает форматы вавода
                    цен и другие числовые форматы. Однако
                    Turbo C++ в настоящее время поддерживает
                    только locale C.
 Возвращаемое       Возвращает указатель на текущую структу-
 значение           ру locale.Дополнительную информацию вы
                    найдете в файле locale.h.

 Переносимость      localeconv поддерживается стандартом
                    ANSI C.

 Смотрите также     setlocale

 Пример:

 #include
 #include

 int main(void)

 {
    struct lconv ll;
    struct lconv *conv = ll;
    /* считать в структуру данные */
    conv = localeconv();
    /* распечатать содержимое */
printf("Десят тчк          : %s\n,conv->desimal_point);
printf("Раздел тысяч       : %s\n,conv->thousands_sep);
printf("Группирование      : %s\n,conv->grouping);
printf("Меж-ный сим.вал.   : %s\n,conv->int_curr_sumbol);
printf("$ раздел. тысяч    : %s\n,conv->mon_thounsands_sep);
printf("$ группирован.     : %s\n,conv->mon_grouping);
printf("Полож.знак         : %s\n,conv->positive_sign);
printf("Отрицат.знак       : %s\n,conv->negative_sign);
printf("Межд.частич.сим.   : %d\n,conv->int_frac_digits);
printf("Частичные числа    : %d\n,conv->frac_digits);
printf("Предшест.сим.вал.  : %d\n,conv->p_cs_precedes);
printf("Раздел.полож.знака : %d\n,conv->p_sep_by_space);
printf("Предшест.сим. вал. : %d\n,conv->n_cs_precedes);
printf("Раздел.отриц.знака : %d\n,conv->n_sep_by_space);
printf("Позиция полож.знака: %d\n,conv->p_sign_posn);
printf("Позиция отриц.знака: %d\n,conv->n_sign_posn);
    return 0;


cpp

localtime
 Функция            Преобразует дату и время в структуру.

 Синтаксис       #include
                 struct tm *localtime(const time_t * clock);

 Файл, содержащий   time.h
 прототип

 Описание           localtime получает адрес значения
                    возвращаемого функцией time и
                    возвращает указатель на структуру
                    типа tm, содержащую разделенное время.
                    localtime преобразует время к местной
                    временной зоне и возможно к летнему
                    времени.
                    Глобальная переменная типа long
                    timezone должна содержать разницу в
                    секундах между временем по Гринвичу и
                    местным временем. Глобальная переменная
                    daylight должна быть равна 0, если не
                    используется стандартное летнее время.
                    Структура tm объявленна в time.h
                    следующим образом:

                    struct tm {
                    int tm_sec;
                    int tm_min;
                    int tm_hour;
                    int tm_mday;
                    int tm_mon;
                    int tm_year;
                    int tm_wday;
                    int tm_yday;
                    int tm_isdst;
                    };

                    Эти элементы содержат время в
                    24-часовой записи, день месяца 1-31,
                    месяц 1-12, день недели (воскресенье
                    = 0), год - 1900, день года 0-365, и
                    флаг, определяющий действует ли летнее
                    время.

 Возвращаемоe       localtime возвращает указатель на
 значение           структуру, содержащую разделенное время.
                    Эта структура имеет класс памяти static
                    и перезаписывается при каждом вызове.

 Переносимость      localtime доступна в системах UNIX
                    и поддерживается стандартом ANSI C.

 Смотрите также     asctime ctime gmtime ftime stime
                    time tzset

 Пример:

 #include
 #include
 #include

 int main(void)
 {
 time_t     timer;
 struct tm  *tblock;
 timer = time(NULL);
 tblock = localtime(&timer);
 printf("Местное время: %s",asctime(tblock));
 return 0;


cpp

lock
 Функция            Блокирует доступ к части файла.

 Синтаксис   #include
             int lock(int handle, long offset, long length);

 Файл, содержащий   io.h
 прототип

 Описание   lock позволяет вам использовать
            механизм разделения доступа к файлам
            введенный в DOS 3.x. Перед исполь-
            зованием этой функции необходимо
            загрузить SHARE.EXE.

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

 Возвращаемое       Функция возвращает 0 при успешном
 значение           завершении, и -1 при ошибке.

 Переносимость      Функция уникальна для систем DOS версий
                    3.x. Более ранние версии DOS не
                    поддерживают этих вызовов.

 Смотрите также     open sopen unlock

 Пример:

 #include
 #include
 #include
 #include
 #include
 #include

 int main(void)
 {
     int handle,status;
     long length;
     /* для поддержки разделения файлов необходимо пред-
        варительно загрузить SHARE.EXE. */
     handle = sopen("c:\\autoexec.bat",
          O_RDONLY, SH_DENYNO, S_IREAD);
     if(!handle)
     {
         printf("Ошибка при операции sopen");
         exit(1);
     }
     length = filelength(handle);
     status = lock(handle,0L,length/2);
     if(status == 0)
         printf("Успешная операция блокировки");
     else
         printf("Ошибка при операции блокировки");
     status = unlock(handle,0L,length/2);
     if(status == 0)
         printf("Успешная операция разблокировки");
     else
         printf("Ошибка при операции разблокировки");
     close(handle);
     return 0;


cpp

log
 Функция            Вычисляет натуральный логарифм ln(x).

 Синтаксис Версия для вещественных   Версия для комплексных
           #include          #include
           double log(double x);     complex log(complex x);

 Файл,     Версия для вещественных    Версия для комплексных
 содерж.   math.h                     complex.h
 прототип

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

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

                       log(z) = log(abs(z)) + i arg(z)

 Возвращаемое       При успешном завершении log возвращает
 значение           вычисленное значение (ln(x)). Если
                    аргумент х передаваемый функции log
                    меньше 0, то глобальной переменной errno
                    присваивается значение:

                          EDOM - Ошибка области определения.

                    log(0) возвращает значение обратное
                    HUGE_VAL иприсваивает глобальное
                    переменной errno значение ERANGE.

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

 Переносимость      Версия log для вещественных чисел
                    доступна в системах UNIX и поддержива-
                    ется стандартом ANSI C. Комплексная
                    версия log требует С++ и, скорее всего
                    не переносима.

 Смотрите также     complex exp log0, sqrt

 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x = 8.6872;
    result = log(x);
    printf("Нат.логарифм от %lf равен %lf\n",x,result);
    return 0;


cpp

log10
 Функция            Вычисляет десятичный логарифм log10(x).

Синтаксис Версия для вещественных  Версия для комплексных
          #include         #include
          double log10(double x);  complex log10(complex x);

 Файл,    Версия для вещественных  Версия для комплексных
 содерж   math.h                   complex.h
 прототип

 Описание   log10 вычисляет десятичный логарифм от х.

            Десятичный логарифм комплексного числа определя-
            ется следующим образом:

             log10(z) = log(z)/log(10)

 Возвращаемое  При успешном завершении log10 возвращает
 значение      вычисленное значение (log10(x)). Если
               аргумент х передаваемый функции log10 меньше
               0, то глобальной переменной errno присва-
               ивается значение:

                      EDOM - Ошибка области определения.

               log10(0) возвращает значение обратное
               HUGE_VAL.

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

 Переносимость Версия log10 для вещественных чисел доступна
               в системах UNIX и поддерживается стандартом
               ANSI C.  Комплексная версия log10 требует С++
               и поэтому скорее всего не переносима.

 Смотрите также     complex exp log

 Пример:

 #include
 #include

 int main(void)
 {
    double result;
    double x = 800.6872;
    result = log10(x);
  printf("Десятичный логарифм от %lf равен %lf\n",x,result);
    return 0;


cpp

longjmp
 Функция            Выполняет нелокальный переход.

 Синтаксис          #include
                    void longjmp(jmp_buf jmpb, int retval);

 Файл, содержащий   setjmp.h
 прототип

 Описание   Вызов функции longjmp восстанавливает состояние
            задачи, которое было установлено при последнем
            вызове функции setjmp с аргументом jmpb. Затем
            она возвращает значение retval также,как и функ-
            ция setjmp.

            Cостояние задачи представляет собой следующее:

            - все сегментные регистры (CX,DS,ES,SS);
            - переменные-регистры (SI,DI);
            - указатель стека (SP);
            - указатель базы (BP);
            - флаги.

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

           Перед использованием функции longjmp необходимо
           вызвать функцию setjmp. Программа вызывающая
           setjmp и устанавливающая jmpb должна оставаться
           активной и не должна возвращать управления до вы-
           зова longjmp. Если это случится, то результат
           непредсказуем.

            longjmp не может посылать значение 0. Если 0 по-
            сылается в retval, то он заменяется на 1.

            Примечание. Функции setjmp и longjmp нельзя ис-
            пользовать для реализации оверлейных программ.
            Обычно setjmp и longjmp сохраняют и восстананав-
            ливают все, необходимые для реализации сопрог-
            рамм, однако для управления оверлеями необходимо
            следить за стеком, причем подразумевается, что
            стек один. При реализации сопрограмм вы обычно
            используете два стека, или две части одного сте-
            ка, и поэтому администратор оверлеев не сможет
            корректно их отслеживать.

            Вы можете иметь задачи, работающие в фоновом ре-
            жиме, которые используют свой стек,или свой раз-
            дел общего стека, однако вы должны быть уверены,
            что они не используют оверлеев, и вы не должны
            использовать оверлейные версии setjmp и longjmp
            для переключения на эти фоновые задачи.

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

 Переносимость      Функция поддерживаются на системах UNIX
                    и стандартом ANSI C.

 Смотрите также     ctrlbrk setjmp signal

 Пример:

 #include
 #include

 int main(void)
 {
    jmp_buf jumper;
    int value;
    value = setjmp(jumper);
    if (value != 0) {
      printf("longjmp со значением %d\n", value);
      exit(value);
    }
    printf("Вызов подпрограммы ... \n");
    subroutine();
 }
 subroutine()
 {
    longjmp(jumper,l);
 }

 Вывод:

 Вызов подпрограммы ...
 Longjmp со значением l


cpp

lowvideo
 Функция            Устанавливает низкую интенсивность
                    выводимых символов.

 Синтаксис          #include
                    void lowvideo(void);

 Файл содержащий    conio.h
 прототип

 Описание           lowvideo обнуляет бит интенсивности в
                    поле атрибутов текущего цвета символов.

                    Вызов этой функции не отражается на на
                    тексте, находящемся на экране, а только
                    на результате работы функций, производя-
                    щих вывод в текстовом режиме на консоль,
                    и только после вызова функции liwvideo.

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

 Переносимость lowvideo работает только на компьютерах
               совместимых с IBM PC. Аналогичная функции
               есть в Turbo Pascal.

 Смотрите также     highvideo normvideo textattr textcolor

 Пример:

 #include

 int main(void)
 {
    clrscr();
    lowvideo();
    cprintf("Текст низкой интенсивности");
    highvideo();
    gotoxy(1,2);
    cprintf("Текст высокой интенсивности");
    return 0;


cpp

lsearch
 Функция            Производит линейный поиск.

 Синтаксис   #include
             void *lsearch(const void *key, void *base,
                   size_t num, size_t width,
                   int(*fcmp)(const void *, const void *));

 Файл, содержащий   stdlib.h
 прототип

 Описание  lsearch производит просмотр таблицы. Т.к. это ли-
           нейный поиск, то элементы таблицы не должны быть
           отсортированы, перед вызовом функции lsearch. Ес-
           ли элемент, на который указывает key, не найден в
           таблице, то lsearch добавляет его к ней.

           base - это указатель на базу (0-ой элемент) таб-
                  лицы.

           num - указывает на целое значение, определяющее
                  число элементов в таблице.

           key - указывает на искомый элемент.

           wight- содержит размер элемента таблицы в байтах.

           Аргумент fcmp указывает на программу сравнения
           написанную пользователем. Она должна сравнивать
           два элемента и возвращать результат сравнения.

           При просмотре таблицы lsearch вызывает программу
           сравнения, на которую указывает аргумент fcmp.

           При каждом вызове программы сравнения lsearch по-
           сылает ей два ппараметра: key - указатель на ис-
           комый элемент, и elem - указатель на элемент в
           таблице.

           fcmp может интерпретировать полученные параметры
           любым путем.

 Возвращаемое   lsearch возвращает адрес первого элемента в
 значение       таблице, совпадающего с искомым.

                Если key совпадает с elem, то fcmp
                возвращает 0, в противном случае fcmp
                возвращает ненулевое зна- чение.

 Переносимость      lsearch доступна в системах UNIX.

 Смотрите также     bsearch lfind

 Пример:

 #include
 #include
 #include

 /* инициализировать число цветов */
 char *color[10] = {"Red","Blue","Green"};
 int ncolors = 3;

 int colorscmp(char **arg1, char **arg2)
 {
   return(strcmp(*arg1,*arg2));
 }

 int addelem(char *color)
 {
   int oldn = ncolors;
   lsearch(&color, colors, (size_t*)&colors,
                  sizeof(char*), colorscmp);
   return(ncolors = oldn);
 }

 int main(void)

 {
   int i;
   char *key = "Purple";

   if(addelem(key))
     printf("%s уже в таблице", key);
 else
     printf("%s добавлен в таблицу цветов ",
             "теперь в ней %d цветов",key,ncolors);
 printf("Цвета:");
 for(i=0; i


cpp

lseek
 Функция           Перемещает указатель чтения/записи файла.

Синтаксис #include
          long lseek(int handle, long offset,int fromwhere);

 Файл, содержащий   io.h
 прототип

 Описание  Функция lseek устанавливает указатель файла, свя-
           занный с параметром handle, в новую позицию, ко-
           торая находится на offset байтов относительно
           местоположения заданного параметром fromwhere.
           Параметр fromwhere должен иметь одно из трех зна-
           чений 0, 1 или 2, которые представлены тремя сим-
           волическими константами (определенными в файле
           stdio.h) следующим образом:
        --------------------------------------------------¬
        ¦Параметр fromwhere       Месторасположение       ¦
        ¦                         в файле                 ¦
        +-------------------------------------------------+
        ¦SEEK_SET      (0)        начало файла            ¦
        ¦SEEK_CUR      (1)        текущая позиция указател¦
        ¦                         файла                   ¦
        ¦SEEK_END      (2)        конец файла             ¦
        L--------------------------------------------------

 Возвращаемое Функция lseek возвращает значение смещения
 значение     новой y позиции указателя, измеряемой в байтах
              от начала файла. В случае ошибки функция lseek
              возвращает значение -1L и глобальная перемен-
              ная errno получает одно из следующих значений:

              EBADF   - неверный номер файла;
              EINVAL  - неверный аргумент.

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

 Переносим.   lseek поддерживается на всех системах UNIX.

 Смотрите также     filelength fseek ftell getc open
                    sopen ungetc _write write

 Пример:

 #include
 #include
 #include
 #include
 #include

 int main(void)
 {
    int handle;
    char msg[] = "Это тест";
    char ch;
    /* создать файл */
  handle = open("TEST.$$$",O_CREAT|O_RDWR,S_IREAD|S_IWRITE);
    /* вывести в файл данные */
    write(handle,msg,strlen(msg));
    /* переместить указатель в начало файла */
    lseek(handle,0L,SEEK_SET);
    /* считывать данные из файла, пока не встретим EOF */
    do
    {
       read(handle,&ch,1);
       printf("%c",ch);
    } while(!eof(handle));
    close(handle);
    return 0;


cpp

ltoa
Функция            Преобразует длинное целое значение в
                   строку символов.

Синтак.    #include
            char *ltoa(long value, char *string, int radix);

Файл, сод.   stdlib.h
прототип

Описание           Эта функция преобразует значение value в
                   строку символов, оканчивающуюся нулем, и
                   записывают результат в параметр string.
                   Для функции ltoa значение value -
                   длинное целое.

                   Параметр radix определяет базис, который
                   будет использован при преобразовании
                   значения value; он должен лежать между 2
                   и 36 (включительно). Eсли значение value
                   отрицательно, и значение radix 10, первый
                   символ строки string - знак минус (-).

                   Примечание. Пространство, выделяемое для
                   параметра string должно быть достаточным,
                   чтобы записать полученную в результате
                   работы функции строку, включая нулевой
                   байт (\0). Функция ltoa может возвращать
                   до 33 байтов;

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

Переносимость      ltoa уникальна для DOS.

Смотрите также      itoa ultoa

Пример:

#include
#include

int main(void)
{
   char string[25];
   long value = 123456789L;
   ltoa(value,string,10);
   printf("число = %ld строка: %s\n",value,string);
   return 0;


cpp

malloc
Функция            Выделяет память.

Синтаксис          #include
                   #include
                   void *malloc(size_t size);

Файл, содержащий   stdlib.h и alloc.h
прототип

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

          Динамическая область памяти доступна для динами-
          ческого размещения блоков памяти переменной дли-
          ны. Многие структуры данных, такие как "деревья"
          или "списки" - естественным образом используют
          динамическое распределение памяти.

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

          В больших моделях памяти все пространство после
          программного стека до конца физической памяти
          доступно для динамической области.

Возвращаемое   значение
            Функция malloc возвращает указатель на блок выде-
            ленной памяти. Если для размещения блока недоста-
            точно памяти, функция malloc возвращает NULL. Со-
            держимое блока остается неизменным. Если аргумент
            size равен 0, то функция возвращает NULL.

Переносимость      Функция доступна в системах UNIX и
                   поддерживается стандартом ANSI C.

Смотрите также      allocmem calloc coreleft farcalloc
                    farmalloc free realloc
Пример:

#include
#include
#include
#include

int main(void)
{
   char *str;
   /* выделить память под строку */

   if((str = malloc(10)) == NULL)
   {
      printf("Недостаточно памяти\n");
      exit(1); /* завершение с кодом ошибки */
   }
   /* скопировать в строку "Hello" */
   strcpy(str,"Hello");
   /* вывести строку */
   printf("Строка: %s\n",str);
   /* освободить память */
   free(str);
   return 0;


cpp

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

Синтаксис          #include
                   int matherr(struct exception *e);

Файл, содержащий   math.h
прототип

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

          matherr служит в качестве пользовательской ловуш-
          ки, (функции определяемой пользователем) которую
          вы можете написать сами (смотрите пример).

          matherr сожно использовать для отслеживания оши-
          бок области определения и выхода за пределы диа-
          пазона, происходящих в математических функциях.
          Она не отслеживает исключительных ситуаций, воз-
          никающих при работе со значениями с плавающей
          точкой (например при делении на 0). Для отслежи-
          вания таких ошибок смотри функцию signal.

          Вы можете модифицировать процедуру matherr специ-
          ально для вашего случая (то есть она будет отлав-
          ливать определенные типы ошибок); модифицирован-
          ная функция matherr должна возвращать 0, если она
          не может обработать данную ошибку, и 1, если
          ошибка успешно обработана. Если функция matherr
          возвращает ненулевое значение, сообщение об ошиб-
          ке не печатается, и переменная errno не изменяет-
          ся.

          Ниже приведена структура exception (определенная
          в файле math.h):

          struct exception {
          int type;
          char *Function;
          double arg1, arg2, retval;
          };

          Составные части структуры exception обозначают
          следующее:

---------T-------------------------------------------------¬
¦Имя     ¦               Что это                           ¦
+--------+-------------------------------------------------+
¦type    ¦ тип произошедшей математической ошибки; тип enum¦
¦        ¦ определен в typedef_mexcep (смотрите определение¦
¦        ¦ после данного списка).                          ¦
¦Function¦ указатель на символьную строку с нулевым        ¦
¦        ¦ окончанием, содержащую имя библиотечной         ¦
¦        ¦ математической функции, которая выдала ошибку.  ¦
¦arg1,   ¦ аргументы (переданные данной функции), которые  ¦
¦arg2    ¦ вызвали ошибку; если функции передается только  ¦
¦        ¦ один аргумент, он хранится в arg1.              ¦
¦retval  ¦ стандартное возвращаемое значение для функции   ¦
¦        ¦ matherr; вы можете модифицировать это значение. ¦
L--------+--------------------------------------------------

           Параметр typedef_mexcep, также определенный в
           файле math.h, перечисляет следующие символические
           константы, представляющие собой возможные матема-
           тические ошибки:

----------------T------------------------------------------¬
¦Символическая  ¦   Математическая ошибка                  ¦
¦константа      ¦                                          ¦
+---------------+------------------------------------------+
¦DOMAIN         ¦ аргумент не находится в области          ¦
¦               ¦ определения функции (например log(-1));  ¦
¦SING           ¦ аргументы дают ошибку в сингулярности    ¦
¦               ¦ (например pow(0,-2));                    ¦
¦OVERFLOW       ¦ аргумент приводит к результату, превыша- ¦
¦               ¦ ющему MAXDOUBLE (например exp(1000));    ¦
¦UNDERFLOW      ¦ аргумент приводит к результату, меньшему ¦
¦               ¦ MINDOUBLE (например exp(-1000));         ¦
¦TLOSS          ¦ аргументы дают результат с потерей значащ¦
¦               ¦ цифр например sin(10e70)).               ¦
L---------------+-------------------------------------------

           Символические константы MAXDOUBLE и MINDOUBLE оп-
           ределены в файле values.h.

           Исходный код для функции matherr, определенной по
           умолчанию находится на дистрибутивных дисках с
           системой Turbo C++.

           Стандарт UNIX функции matherr несовместим со
           стандартом ANSI C. Если вам требуется версия фун-
           кции matherr для системы UNIX, пользуйтесь прог-
           раммой matherr.c, поставляемой на дистрибутивных
           дискетах пакета Turbo C.

Возвращаемое  значение
          По умолчанию функция matherr возвращает 1 если
          ошибка UNDERFLOW или TLOSS, иначе  0. Функция
          matherr также может модифицировать параметр
          e->retval, который посредством функции matherr
          передается в вызывающую программу.

          Когда функция matherr возвращает 0, (означающий,
          что обработать ошибку она не может), функция
          _matherr устанавливает переменную errno и печатает
          сообщение об ошибке. Когда функция matherr возвра-
          щает ненулевое значение, (означающее,  что  ошибка
          успешно  обработана),  глобальная переменная errno
          не устанавливается и сообщение об ошибке не  выво-
          дится.

Переносимость
          matherr доступна на многих компиляторах Си, одна-
          ко она не поддерживается стандартом ANSI C.
          matherr в стиле системы UNIX (которая печатает
          сообшение и завершает выполнение программы) пос-
          тавляется вместе с пакетом Turbo C++ в файле
          MATHERR.C. matherr может не поддерживаться в
          дальнейших версиях Turbo C++.
Пример:

#include
#include
#include

int matherr(struct exception *a);
{
   if (a -> type == DOMAIN)
   {
      if(strcmp(a -> name, "sqrt") == 0)
      {
         a -> retval = sqrt (-(a -> arg1));
         return (1);
   }
}
return (0);
}

int main(void)
{
   double x,y;
   x = -2.0;
   y = sqrt(x);
   printf("Значение, скорректированное matherr: %lf\n",y);
   return 0;


cpp

max
Функция            Возвращает наибольшее из двух значений.

Синтаксис          #include
                   (type)max(a,b);

Файл содержащий    stdlib.h
прототип

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

Возвращаемое значений
          max возвращает наибольшее из двух значений.

Смотрите также      min

Пример:

#include
int main(void)
{
  int x = 5;
  int y = 6;
  int z;
  z = max(x,y);
  printf("Наибольшее значение: %d\n",z);
  return 0;
}

Вывод:

Наибольшее значение: 6


cpp

memccpy
Функция            Копирует блок размером в n байт.

Синтаксис          #include
                   void *memccpy(const void *dest, const
                   void *src, int c, size_t n);
Файл содержащий    mem.h

Описание
          memccpy копирует блок из n байт из src в dest. Ко-
          пирование прекращается при следующих обстоятель-
          ствах:

          - первым копируется символ c;

          - в dest скопировано n байт;

Возвращаемое  значение
           memccpy возвращает указатель на байт, сразуже
           следующий за с, если он был скопирован. В
           противном случае memccpy возвращает NULL.

Переносимость      memccpy доступна в UNIX System V.

Смотрите также      memcpy memmove memset

Пример:

#include
#include

int main(void)
{
   char *src = "This is the source string";
   char dest[50];
   char *ptr;
   ptr = memccpy(dest,src,'c',strlen(src));
   if(ptr)
   {
      *ptr = '\0';
      printf("Был найден символ %s\n",dest);
   }
   else
      printf("Символ не найден\n");
   return 0;


cpp

memchr
Функция            Просматривает n байт в поисках символа c.

Синтаксис    #include
              void *memchr(const void *s, int c, size_t n);

Файл содержащий    mem.h, string.h

Описание
          memchr просматривает блок размером n байт, на ко-
          торый указывает параметр s, в поисках символа c.

Возвращаемое  значение
           При успешном завершении memchr возвращает
           указатель на первый байт, содержащий с, в
           противном случае memchr возвращает NULL.

Переносимость
          memchr доступна в UNIX System V и поддерживается
          стандартом ANSI C.

Пример:

#include
#include

int main(void)
{
   char *src = "This is a string";
   char *ptr;
   ptr = memchr(src,'r',strlen(src));
   if(ptr)
   {
     printf("Был найден символ 'r'на позиции %d\n",ptr-src);
   }
   else
      printf("Символ не найден\n");
   return 0;


cpp

memcmp
Функция        Сравнивает два блока каждый из которых длино
               в n байт.

Синтаксис          #include
                   void *memcmp(const void *s1,
                                const void *s2, size_t n);

Файл содержащий    mem.h,string.h
прототип

Описание
          memcmp сравнивает первые n байт блоков s1 и s2,
          как значения типа unsigned char.

Возвращаемое       memcmp возвращает значение:
значение
                   <0 - если s1 меньше s2
                   =0 - если s1 равно s2
                   >0 - если s1 больше s2

                   Т.к. memcmp производит сравнение значе-
                   ний, имеющих тип unsigned char, то при
                   таком вызове:

                       memcmp("\xFF", "\x7F",1);

                   возвращаемое значение будет > 0.

Переносимость      memcmp  доступна в UNIX System V и поддерживается
                   стандартом ANSI C.

Смотрите также      memccpy memmove memset movedata movemem

Пример:

#include
#include

int main(void)
{
   char *buf1 = "aaa";
   char *buf2 = "bbb";
   char *buf3 = "ccc";
   int stat;
   stat = memcmp(buf2,buf1,strlen(buf2));
   if(stat>0)
      printf("buf2 > buf1\n");
   else
      printf("buf2 < buf1\n");
   stat = memcmp(buf2,buf3,strlen(buf2));
   if(stat<0)
      printf("buf2 > buf3\n");
   else
      printf("buf2 < buf3\n");
   return 0;


cpp

memcpy
Функция            Копирует блок длиной n байт.

Синтаксис          #include
                   void *memcpy(void *dst,const void *src,size_t n);

Файл, содержащий   string.h, mem.h
прототип

Описание           memcpy копирует n байт из src в dst. Если src и
                   dst перекрываются, то поведение функции неопреде-
                   лено.

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

Переносимость      memcpy  доступна в UNIX System V и поддерживается
                   стандартом ANSI C.

Смотрите также      memccpy memmove memset movedata movemem

Пример:

#include
#include

int main(void)
{
   char src[] = "******************************";
   char dest[] = "abcdefghijklmnopqrstuvwxyz0123456789";
   char *ptr;
   printf("Строка назначения перед копированием: %s",dest);
   ptr = memcpy(dest,src,strlen(len));
   if(ptr)
      printf("Строка назначения после копирования: %s",dest);
   else
     printf("ошибка memcpy");
   return 0;


cpp

memicmp
Функция            Сравнивает n байт двух массивов символов, игнори-
                   руя различие регистров.

Синтаксис          #include
                   int memcmp(const void *s1, const void *s2,
                                       size_t n);

Файл содержащий    mem.h,string.h
прототип

Описание           memicmp сравнивает первые n байт блоков s1 и s2,
                   игнорируя различия регистров (верхний или ниж-
                   ний).

Возвращаемое       memicmp возвращает значение:
значение
                   <0 - если s1 меньше s2
                   =0 - если s1 равно s2
                   >0 - если s1 больше s2

Переносимость      memicmp  доступна в UNIX System V.

Смотрите также      memcmp

Пример:

#include
#include

int main(void)
{
   char *buf1 = "ABCDE123";
   char *buf2 = "abcde456";
   int stat;
   stat = memicmp(buf1,buf2,5);
   printf("Строки до позиции 5");
   if(stat)
      printf("не");
   printf("равны");
   return 0;


cpp

memmove
Функция            Копирует блок размером в n байт.

Синтаксис          #include
                   void *memmove(void *dest, const void *src,
                                      size_t n);

Файл содержащий    mem.h,string.h
прототип

Описание           memmove копирует блок из n байт из src в dest. Ко-
                   пирование будет произведено корректно, даже, если
                   блоки перекрываются.

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

Переносимость      memmove доступна в UNIX System V и поддерживается
                   стандартом ANSI C.

Смотрите также      memccpy memcpy movmem

Пример:

#include
#include

int main(void)
{
   char src[] = "******************************";
   char dest[] = "abcdefghijklmnopqrstuvwxyz0123456789";
   printf("Строка назначения перед копированием: %s",dest);
   ptr = memmove(dest,src,26);
   printf("Строка назначения после копирования: %s",dest);
   return 0;


cpp

memset
Функция            Заполняет блок размером в n байт значениеями c.

Синтаксис          #include
                   void *memset(void *s, int c, size_t n);

Файл содержащий    mem.h, string.h
прототип

Описание           memset присваивает первым n байтам массива s зна-
                   чение c.

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

Переносимость      memset доступна в UNIX System V и поддерживается
                   стандартом ANSI C.

Смотрите также      memccpy memcpy setmem

Пример:

#include
#include
#include

int main(void)
{
   char buffer[] = "Hello world\n";
   printf("Буфер перед использованием функции memset:%s\n",buffer);
   memset(buffer,'*',strlen(buffer) - 1);
   printf("Буфер после использованя функции memset:%s\n",buffer);
   return 0;


cpp

min
Функция            Возвращает меньшее из двух значений.

Синтаксис          #include
                   (type)min(a,b);

Файл содержащий    stdlib.h
прототип

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

Возвращаемое       min возвращает меньшее из двух значений.
значений

Смотрите также      max

Пример:

#include
#include

int main(void)
{
  int x = 5;
  int y = 6;
  printf("Наименьшее значение: %d\n",min(x,y));
  return 0;
}

Вывод:

Наименьшее значение: 6


cpp

MK_FP
Функция            Создает "дальний" адресный указатель.

Синтаксис          #include
                   void far *MK_FP(unsigned seg, unsigned ofs);

Файл, содержащий   dos.h
прототип

Описание           MK_FP это макроопределение, которое создает даль-
                   ний указатель из адреса сегмента (seg) и смещения
                   (ofs).

Возвращаемое       MK_FR возвращает "дальний" указатель.

Переносимость      MK_FP уникальна для Turbo C++.

Смотрите также      FP_OFF FP_SEG movedata segread

Пример:

#include
#include

int main(void)
{
   int gd,gm,i;
   unsigned int far *screen;
   getectgraph(&gd,&gm);
   if(gd == HERMONO)
      screen = MK_FP(0xB000,0);
   else
      screen = MK_FP(0xB800,0);
   for(i=0; i<26; i++)
      screen[i] = 0x0700+('a'+i);
   return 0;


cpp

mkdir
Функция            Создает директорию.

Синтаксис          #include
                   int mkdir(const char *path);

Файл содержащий    dir.h
прототип

Описание           mkdir создает новую директорию по имени данного
                   маршрута.

Возвращаемое       При успешном завершении mkdir возвращает 0. При
значение           возникновении ошибки mkdir возвращает -1 и прис-
                   ваивает глобальной переменной errno одно из сле-
                   дующих значений:

                   EACCES - Доступ запрещен;
                   ENOENT - Нет такого файла или директории.

Смотрите также      chdir getcurdir getcwd rmdir

Пример:

#include
#include
#include
#include

int main(void)
{
   int status;
   clrscr();
   status = mkdir("asdfjklm");
   (!status) ? (printf("Директория создана\n")) :
               (printf("Не могу создать директорию\n"));
   getch();
   system("dir");
   getch();
   status = rmdir("asdfjklm");
   (!status) ? (printf("Директория удалена\n")) :
               (printf("Не могу удалить директорию\n"));
   return 0;


cpp

mktemp
Функция            Создает уникальное имя файла.

Синтаксис          #include
                   char *mktemp(char *template);

Файл, содержащий   dir.h
прототип

Описание           Функция mktemp помещает в параметр template уни-
                   кальное имя файла и возвращает адрес template.

                   Параметр template должен представлять собой стро-
                   ку символов с нулевым окончанием и шестью хвосто-
                   выми символами x. Данные 6 знаков X заменяются на
                   уникальное сочетание букв плюс точка таким обра-
                   зом, что две буквы, точка и три буквы суффикса
                   дают в результате новое имя файла.

                   Новое имя файла присваивается после просмотра
                   имеющихся имен на диске, начиная с имени AA.AAA,
                   и избегая уже существующих имен в том же формате.

Возвращаемое       Если параметр template корректно сформирован,
значение           функция mktemp возвращает адрес символьной строки
                   template. В противном случае она возвращает ноль.

Переносимость      Функция поддерживается на системах UNIX.

Пример:

#include
#include

int main(void)
{
   /* fname определяет маску для имени файла */
   char *fname = "TXXXXXX", *ptr;
   ptr = mktemp(fname);
   printf("%s\n",ptr);
   return 0;


cpp

mktime
Функция            Преобразует время к календарному времени.

Синтаксис          #include
                   time_t mktime(struct tm *t);

Файл, содержащий   time.h
прототип

Описание           Преобразует время из структуры, на которую указы-
                   вает параметр t, в календарное время в формат,
                   используемый функцией time. Исходные значение по-
                   лей tm_sec, tm_min, tm_hour, tm_mday и tm_mon не
                   ограничены диапазонами, приведенными при описании
                   структуры tm. Если значение поля выходит за ука-
                   занные пределы, то оно приводится к нужному диа-
                   пазону. Значения для полей tm_wday и tm_yday вы-
                   числяются после приведения остальных значений.

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

Переносимость      mktime поддерживается стандартом ANSI C.

Смотрите также      localtime strftime time

Пример:

#include
#include

char *wday[] = {"Воскресенье","Понедельник","Вторник",
                "Среда","Четверг","Пятница","Суббота",
                "Неизвестен"};

int main(void)
{
   struct tm time_check;
   int year,month,day;
   /* для нахождения дня недели, необходимо ввести
      день, месяц и год */
   printf("Год:  ");
   scanf("%d",&year);
   printf("Месяц:  ");
   scanf("%d",&month);
   printf("День:  ");
   scanf("%d",&day);
   /* занести данные в структуру time_check */
   time_check.tm_year = year -1900;
   time_check.tm_mon = month - 1;
   time_check.tm_mday = day;
   time_check.tm_hour = 0;
   time_check.tm_min = 0;
   time_check.tm_sec = 0;
   time_check.tm_isdst = -1;
   /* для заполнения оставшихся полей вызвать mktime */
   if(mktime(&time_check) == -1)
       time_check.tm_wday = 7;
   /* вывести день недели */
   printf("Это был: %s\n",wday[time_check.tm_wday]);
   return 0;


cpp

modf
Функция            Расщепляет число (double) на целую и дробную
                   части.

Синтаксис          #include
                   double modf(double x, double *iptr)

Файл, содержащий   math.h
прототип

Описание           modf разделяет число типа double на целую и дроб-
                   ную части. Целая часть помещается в ipart, а
                   дробная часть возвращается.

Возвращаемое       modf возвращает дробную часть x.
значение

Смотрите также      fmod ldexp

Пример:

#include
#include

int main(void)
{
   double fraction,integer;
   double number = 100000.567;
   fraction = modf(number,&integer);
   printf("Целая и дробная части числа %lf равны %lf и %lf",
           number, integer, fraction);
   return 0;


cpp

movedata
Функция            Копирует n байт.

Синтаксис          #include
                   void movedata(unsigned segsrc, unsigned offsrc,
                         unsigned segdst, unsigned offdst, size_t n);

Файл, содержащий   mem.h, string.h
прототип

Описание           Функция movedata копирует n байт, с исходного ад-
                   реса (segsrc:offsrc) по адресу (segdest:offdest).

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

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

Переносимость      movedata уникальна для DOS.

Смотрите также      FP_OFF memcpy MK_FP movmem segread

Пример:

#include

#define COLOR_BASE 0xB800
#define BUFFER_SIZE 80*25*2

char buf[BUFFER_SIZE];

/* сохранить содержимое буфера цветного дисплея в памяти */
void save_color_screen(char near *buffer)
{
  movedata(COLOR_BASE, 0, _DS, (unsigned)buffer, BUFFER_SIZE);
}
int main(void)
{
   save_color_screen(buf);
   return 0;


cpp

moverel
Функция            Перемещает текущую позицию (CP) на заданное рас-
                   стояние.

Синтаксис          #include
                   void far moverel(int dx,int dy);

Файл, содержащий   graphics.h
прототип

Описание           moverel перемещает текущую позицию (CP) на dx
                   точек по оси Х и на dy точек по оси Y.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      moveto

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* переместить текущую позицию (CP) в точку (20,30) */
moveto(20,30);
/* нарисовать точку */
putpixel(getx(),gety(),getmaxcolor());
/* создать строку с сообщением */
sprintf(msg," (%d,%d)",getx(),gety());
outtextxy(20,30,msg);
/* переместить текущую позицию относительно
   текущего положения */
moverel(100,100);
/* нарисовать точку */
putpixel(getx(),gety(),getmaxcolor());
/* создать строку с сообщением */
sprintf(msg," (%d,%d)",getx(),gety());
outtext(msg);

/* очистка */
getch();
closegraph();
return 0;


cpp

movetext
Функция            Копирует текст на экране из одного прямоугольника
                   в другой.

Синтаксис          #include
                   int movetext(int left, int top,
                                int right, int bottom,
                                int destleft, int desttop);

Файл содержащий    conio.h
прототип

Описание           movetext копирует содержимое прямоугольника на эк-
                   ране, определяемого аргументами left, top, right
                   и bottom, в новый прямоугольник, имеющий теже
                   размеры. Левый верхний угол этого прямоугольника
                   определяется параметрами destleft, desttop.

                   Все координаты являются абсолютными, т.е. коорди-
                   натами относительно левого верхнего угла экрана.

                   Текст будет скопирован корректно, даже если пря-
                   моугольники перекрываются.

                   movetext работает в текстовом режиме и производит
                   непосредственный вывод на экран.

Возвращаемое       movetext возвращает ненулевое значение в случае
значение           успешного завершения. При ошибке (например, если
                   указанные координаты лежат за пределами экрана),
                   movetext возвращает 0.

Переносимость      movetext может использоваться на системах IBM PC и
                   совместимых с ней.

Смотрите также      gettext puttext

Пример:

#include
#include

int main(void)
{
   char *str = "Это тестовая строка";
   clrscr();
   cputs(str);
   getch();
   movtext(1,1,strlen(str),2,10,10);
   getch();
   return 0;


cpp

moveto
Функция            Перемещает текущую позицию (CP) в точку с коор-
                   динатами (x,y).

Синтаксис          #include
                   void far moveto(int x,int y);

Файл, содержащий   graphics.h
прототип

Описание           moveto перемещает текущую позицию (CP) в позицию
                   с координатами (x,y) в текущей области просмотра.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      moverel

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* переместить текущую позицию (CP) в точку (20,30) */
moveto(20,30);
/* нарисовать точку */
putpixel(getx(),gety(),getmaxcolor());
/* создать строку с сообщением */
sprintf(msg," (%d,%d)",getx(),gety());
outtextxy(20,30,msg);
/* нарисовать линию относительно текущей позиции */
moveto(100,100);
/* нарисовать точку */
putpixel(getx(),gety(),getmaxcolor());
/* создать строку с сообщением */
sprintf(msg," (%d,%d)",getx(),gety());
outtext(msg);
/* очистка */
getch();
closegraph();
return 0;


cpp

movmem
Функция            Копирует блок, длиной length байт.

Синтаксис          #include
                   void movmem(void *src, void *dest,
                    unsigned length);

Файл, содержащий   mem.h
прототип

Описание           Функция movmem копирует блок длиной length байт с
                   исходного адреса src по адресу dest. Направление
                   копирования всегда выбирается таким образом, что
                   данные всегда копируются точно, даже если блоки
                   перекрываются.

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

Переносимость      movmem уникальна для Turbo C++.

Смотрите также      memcpy memmove movedata

Пример:

#include
#include
#include
#include

int main(void)
{
   char *source = "Borland International";
   char *destination;
   int length;
   length = strlen(source);
   destination = malloc(length+1);
   movmem(source,destination,length);
   printf("%s\n",destination);
   return 0;


cpp

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

Синтаксис          #include
                   double norm(complex x);

Файл, содержащий   complex.h
прототип

Описание           При использовании norm может произойти переполне-
                   ние, если действительная или мнимая часть будут
                   слишком большими.

Возвращаемое       norm(x) возвращает real(x)*real(x)+imag(x)*imag(x).
значение

Переносимость      Комплексные функции требуют С++ и поэтому непере-
                   носимы.

Смотрите также      arg complex polar

Пример:

#include
#include

int main(void)
{
   double x = 3.1,y=4.2;
   complex z = complex(x,y);
   cout << "z =" << z << "\n";
   cout << "действительная часть =" << real(z) << "\n";
   cout << "мнимая часть =" << imag(z) << "\n";
   cout << "комплексно сопряженное z, =" << conj(z) << "\n";
   double mag = sqrt(norm(z));
   double ang = arg(z);
   cout << "Полярная форма z:\n";
   cout << "Значение: " << mag << "\n";
   cout << "Угол: (в радианах)" << ang << "\n";
   cout << "Восстановление z из представления в полярных координа\
                тах дает:\n";
   cout << "  z =" << polar(mag,ang) << "\n";
   return 0;


cpp

normvideo
Функция            Устанавливает нормальную интенсивность выводимых
                   символов.

Синтаксис          #include
                   void normvideo(void);

Файл, содержащий   conio.h
прототип

Описание           normvideo восстанавливает исходное значение бита
                   интенсивности в поле атрибутов текущего цвета
                   символов.

                   Вызов этой функции не отражается на на тексте,
                   находящемся на экране, а только на результате ра-
                   боты функций, производящих вывод в текстовом ре-
                   жиме, прямой вывод на консоль, и только после вы-
                   зова функции normvideo.

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

Переносимость      normvideo работает только на компьютерах совмести-
                   мых с IBM PC. Аналогичная функции есть в Turbo
                   Pascal.

Смотрите также      highvideo lowvideo textattr textcolor

Пример:

#include

int main(void)
{
   clrscr();
   lowvideo();
   cprintf("Текст низкой интенсивности");
   highvideo();
   cprintf("Текст высокой интенсивности");
   normvideo();
   cprintf("Текст нормальной интенсивности");
   return 0;


cpp

nosound
Функция            Выключает встроенный динамик.

Синтксис           #include
                   void nosound(void);

Файл, содержащий   dos.h
прототип

Описание           Выключает встроенный динамик, включенный функцией
                   sound.

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

Переносимость      nosound работает только на компьютерах совмести-
                   мых с IBM PC. Аналогичная функции есть в Turbo
                   Pascal.

Смотрите также      delay sound

Пример:

/* Звук частотой 7 Гц в течении 5 секунд
   История. 7 Гц - это резонансная частота черепной впа-
   дины цыплят. Это было обнаружено эмпирически в Австра-
   лии, на птицефабрике, где при включении такого звука, все
   цыплята, находившиеся достаточно близко, умирали.
   Возможно встроенный динамик вашего компьютера не
   может генерировать такой звук. /

int main(void)
{
  sound(7);
  delay(5000);
  nosound();
  return 0;


cpp

open
Функция            открывает файл для чтения или записи.

Синтаксис          #include
                   #include
                   int open(const char *filename, int access
                                  [, unsigned mode]);
Файл, содержащий   io.h
прототип

Описание           Функция open открывает файл, имя которого опреде-
                   лено параметром filename, и подготавливает его к
                   последующим операциям чтения и/или записи, в за-
                   висимости от параметра access.

                   Для создания файла в обычном режиме, вы можете
                   присвоить соответствующее значение _fmode, или
                   при открытии файла указать опции O_CREAT и
                   O_TRUNC связанные операцией побитового логическо-
                   го сложения (OR) с необходимым режимом передачи.
                   К примеру:

                      open("xmp",O_CREAT|O_TRUNC|O_BINARY,S_IREAD);

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

                   Для функции open параметр access конструируется
                   путем логического побитового сложения флагов, пе-
                   речисленных в двух следующих списках. Из первого
                   списка может быть использован только один флаг;
                   остальные флаги могут применяться в любых логи-
                   ческих комбинациях.

                   Список 1: флаги чтения/записи.

                   O_RDONLY   открытие только для чтения.
                   O_WRONLY   открытие только для записи.
                   O_RDWR     открытие для чтения и записи.

                   Список 2: остальные флаги доступа.

                   O_NDELAY   Не используется; для совместимости с
                              системой UNIX.
                   O_APPEND   Если флажок установлен, то перед каждой
                              операцией записи, указатель файла бу-
                              дет устанавливаться на конец файла.
                   O_CREAT    Если файл существует, этот флажок не
                              имеет никакого значения. Если файл не
                              существует, он будет создан, и биты из
                              аргумента mode будут использованы
                              для установки битов-атрибутов файла,
                              как и в функции chmod.
                   O_TRUNC    Если файл существует, его длина усека-
                              ется до 0. Атрибуты файла остаются не-
                              изменными.
                   O_EXCL     Используется только вместе с O_CREAT.
                              Если файл уже существует, то происходит
                              возврат по ошибке.
                   O_BINARY   Данный флаг может быть установлен для
                              гарантированного открытия файла в
                              двоичном режиме.
                   O_TEXT     Данный флаг может быть установлен для
                              гарантированного открытия файла в текс-
                              товом режиме.

                   Эти константы (O_...) определены в файле fcntl.h.

                   Если ни O_BINARY, ни O_TEXT не указаны, файл отк-
                   рывается в режиме трансляции, соответственно гло-
                   бальной переменной _fmode.

                   Если в построении параметра access участвует флаг
                   O_CREAT, вам необходимо указать аргумент mode из
                   следующих символических констант, определенных в
                   файле sys\stat.h.

                   --------------------------------------------------
                   Значение параметра    Возможности доступа
                   mode
                   --------------------------------------------------
                   S_IWRITE              Разрешение на запись.
                   S_IREAD               Разрешение на чтение.
                   S_IREAD/S_IWRITE      Разрешение на чтение/запись.
                   --------------------------------------------------

Возвращаемое       При успешном завершении open возвращает целое
значение           неотрицательное число handle - логический номер
                   открытого файла. Указатель файла (указатель теку-
                   щей позиции) устанавливается на начало файла. При
                   ошибке функция возвращает значение -1, и перемен-
                   ная errno получает одно из следующих значений:

                   ENOENT - Маршрут или имя файла не найдены;
                   EMFILE - Слишком много открытых файлов;
                   EACCES - Доступ запрещен;
                   EINVACC - Неверный код доступа.

Переносимость      Функция open поддерживается на системах UNIX.
                   На версии 7 системы UNIX мнемоника O_тип не опре-
                   делена. Система UNIX SYSTEM 3 пользуется всеми
                   мнемониками O_тип за исключением O_BINARY.

Смотрите также      chmod chsize close _creat creat creatnew
                    creattemp dup dup, fdopen filelenth fopen
                    freopen gettime lseek lock _open read
                    sopen _write write


cpp

outport
Функция            Производит вывод в порт.

Синтаксис          void outport(int portid, int value);

Файл, содержащий   dos.h
прототип

Описание           outport записывает значение параметра value в вы-
                   ходной порт, определяемый параметром portid.

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

Переносимость      Эта функция уникальна для DOS.


cpp

outportb
Функция            Производит вывод в порт байта.

Синтаксис          void outport(int portid, unsigned char value);

Файл, содержащий   dos.h
прототип

Описание           outportb - это макрокоманда, которая записывает
                   значение параметра value в выходной порт, опреде-
                   ляемый параметром portid.

                   При вызове outportb при указанном включаемом фай-
                   ле dos.h, то outportb рассматривается как макро,
                   и расширяется во встроенный машинный код.

                   Если вы не включаете файл dos.h, или если вы от-
                   менили outportb командой #undef, то получите фун-
                   кцию outportb.

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

Переносимость      Эта функция уникальна для DOS.

Смотрите также      inport outport inportb


cpp

outtext
Функция             Отображает строку в окне экрана.

Синтаксис           #include
                    void far outtext(char far *textstring);

Файл, содержащий    graphics.h
прототип

Описание            outtext отображает строку текста в окне,
                    используя текущие установленные параметры вырав-
                    нивания текста, а также текущие шрифт, направле-
                    ние и размер.

                    outtext выводит текст в текущую позицию. Если
                    горизонтальное выравнивание текста равно
                    LEFT_TEXT и направление вывода текста установле-
                    но равным HORIZ_DIR, координата x текущей пози-
                    ции продвигается с помощью
                    textwidth(textstring).Иначе текущая позиция ос-
                    тается неизменной.

                    Для обеспечения совместимости кодов поддержки
                    при использовании различных шрифтов,используйте
                    textwidth и textheight для определения размеров
                    строки.

                    Замечание. Если строка печатается установленным
                    по умолчанию шрифтом с помощью функции outtext,
                    то любая часть строки , которая выходит за пре-
                    делы текущего окна, отсекается.

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

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

Переносимость       Эта функция пригодна только для компьюте-
                    ров IBM PC и совместимых с ними, оснащенных дис-
                    плейными адаптерами, поддерживающими графический
                    режим.

Смотрите также      gettextsettingsouttextxysettextjustify
                    textheight textwidth


cpp

outtextxy
Функция             Отображает строку в указанной области.

Синтаксис           #include
                    void far outtextxy(int x,int y,
                                       char far *textstring);

Файл, содержащий    graphics.h
прототип

Описание            outtext отображает строку текста в окне
                    экрана в заданной позиции (x,y), используя теку-
                    щие установленные параметры выравнивания текста,
                    а также текущие шрифт, направление и размер.

                    Для обеспечения совместимости кодов поддержки
                    при использовании различных шрифтов,используйте
                    textwidth и textheight для определения размеров
                    строки.

                    Замечание. Если строка печатается установленным
                    по умолчанию шрифтом с помощью функций outtext и
                    outtextxy, то любая часть строки , которая выхо-
                    дит за пределы текущего окна отсекается.

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

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

Переносимость       Эта функция пригодна только для компьюте-
                    ров IBM PC и совместимых с ними, оснащенных дис-
                    плейными адаптерами, поддерживающими графический
                    режим.

Смотрите также      gettextsettings outtext textheight textwidth


cpp

parsfnm
Функция            Выделяет имя файла.

Синтаксис          #include
                   char *parsfnm(const char * cmdline,
                     struct fcb *fcb, int opt);

Файл, содержащий   dos.h
прототип

Описание           Функция parsfnm выделяет из строки символов
                   (обычно командной строки) с адресным указателем
                   cmdline имя файла. Имя файла помещается в блок
                   FCB как имя устройства, имя файла и расширение
                   имени файла. Указателем на блок FCB является ука-
                   затель fcbptr.
                   Параметр opt представляет собой значение, переда-
                   ваемое в регистре AL, при вызове соответствующей
                   функции DOS, выделяющий имя файла. Смотрите
                   "Справочное руководство программиста по DOS", в
                   котором вы можете найти подробное описание сис-
                   темного вызова 0x29, выполняющего вышеописанные
                   действия.

Возвращаемое       При успешном завершении функция parsfnm возвращает
значение           указатель на байт, следующий за концом имени фай-
                   ла. Если при выполнении функции произошла какая-
                   либо ошибка, функция возвращает значение 0.

Переносимость      Функция уникальна для DOS.

Пример:

#include
#include
#include
#include

int main(void)
{
   char line[80];
   struct fcb blk;
   /* получить имя файла */
   printf("Введите имя устройства и файл (без маршрута, т.е.\
            a:filename.ext)\n");
   gets(line);
   /* поместить имя файла в FCB (Блок управления файлом) */
   if(parsfnm(line,&blk,1) == NULL)
      printf("Ошибка при вызове parsfnm.\n");
   else
      printf("Устройство: #%d Имя: %11s\n",blk.fcb_drive,
              blk.fcb_name);
   return 0;


cpp

peek
Функция            Возвращает содержимое слова памяти с адресом
                   segment:offset.

Синтаксис          #include
                   int peek(unsigned segment, unsigned offset);

Файл, содержащий   dos.h
прототип

Описание           Функция peek возвращает содержимое слова памяти,
                   по адресу segment:offset.

                   Если функция вызывается при подключенном файле
                   dos.h, она трактуются, как макрокоманда, которая
                   расширяется до встроенного кода. Если же вы не
                   подключаете файл dos.h (или вы выполнили для дан-
                   ной функции директиву #undef), вы будете иметь
                   функцию, а не макрокоманду.

Возвращаемое       Функция peek возвращает значение, хранящееся по
значение           адресу segment:offset.

Переносимость      Функция уникальна для семейства микропроцессоров
                   8086.

Смотрите также      harderr peekb poke

Пример:

#include
#include
#include

int main(void)
{
   int value = 0;
   printf("Статус клавиатуры:\n");
   value = peek(0x0040,0x0017);
   if(value & 1)
      printf("Rigth Shift on\n");
   else
      printf("Rigth Shift off\n");
   if(value & 2)
      printf("Left Shift on\n");
   else
      printf("Left Shift off\n");
   if(value & 4)
      printf("Control key on\n");
   else
      printf("Control key off\n");
   if(value & 8)
      printf("Alt key on\n");
   else
      printf("Alt key off\n");
   if(value & 16)
      printf("Scroll lock on\n");
   else
      printf("Scroll lock off\n");
   if(value & 32)
      printf("Num lock on\n");
   else
      printf("Num lock off\n");
   if(value & 64)
      printf("Caps lock on\n");
   else
      printf("Caps lock off\n");
   return 0;


cpp

peekb
Функция            Функция peekb извлекает из памяти байт, записанный
                   по адресу segment:offset.

Синтаксис          #include
                   char peekb( unsigned segment, unsigned offset);

Файл, содержащий   dos.h
прототип

Описание           Функция peekb извлекает из памяти байт, записанный
                   по адресу segment:offset

                   Если функция вызывается при подключенном файле
                   dos.h, она трактуются, как макрокоманда, которая
                   расширяется до встроенного кода. Если же вы не
                   подключаете файл dos.h (или вы выполнили для дан-
                   ной функции директиву #undef), вы будете иметь
                   функции, а не макрокоманды.

Возвращаемое       Функция peekb возвращает значение байта с адресом
значение           segment:offset.

Переносимость      Функция уникальна для семейства микропроцессоров
                   8086.

Смотрите также      harderr peek pokeb

Пример:

#include
#include
#include

int main(void)
{
   int value = 0;
   printf("Статус клавиатуры:\n");
   value = peekb(0x0040,0x0017);
   if(value & 1)
      printf("Rigth Shift on\n");
   else
      printf("Rigth Shift off\n");
   if(value & 2)
      printf("Left Shift on\n");
   else
      printf("Left Shift off\n");
   if(value & 4)
      printf("Control key on\n");
   else
      printf("Control key off\n");
   if(value & 8)
      printf("Alt key on\n");
   else
      printf("Alt key off\n");
   if(value & 16)
      printf("Scroll lock on\n");
   else
      printf("Scroll lock off\n");
   if(value & 32)
      printf("Num lock on\n");
   else
      printf("Num lock off\n");
   if(value & 64)
      printf("Caps lock on\n");
   else
      printf("Caps lock off\n");
   return 0;


cpp

perror
Функция            Печатает системные сообщения об ошибках.

Синтаксис          #include
                   void perror (const char *s);

Файл, содержащий   stdio.h
прототип

Описание           Функция perror выводит сообщение об ошибке,
                   произшедшей в библиотечной функции, в поток
                   stderr (обычно на консоль).

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

                   Для обеспечения лучшего контроля за форматирова-
                   нием сообщений, массив сообщений об ошибках, со-
                   держится в массиве sys_errlist. Соответственно,
                   переменная errno может быть использована в качес-
                   тве индекса в этом массиве, чтобы корректно выде-
                   лить строку, содержащую сообщение с данным номе-
                   ром. Такая строка - элемент массива - не включает
                   в себя символ перехода на новую строку.

                   Параметр sys_nerr содержит число элементов масси-
                   ва.

                   В главе 2 "Переменные" вы найдете подробную ин-
                   формацию о переменных errno, sys_errlist,
                   sys_nerr.

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

Переносимость      Функция поддерживаются на системах UNIX и стандар-
                   том ANSI C.

Смотрите также      clrerr eof _strerror strerror

Пример:

#include

int main(void)
{
   FILE *fp;
   fp = fopen("perror.dat","r");
   if(!fp)
      perror("Не могу открыть файл для чтения.\n");
   return 0;


cpp

pieslice
Функция            Рисует и закрашивает сектор круга.

Синтаксис          #include
                   void far pieslice(int x,int y,int stangle,
                                      int endangle,int radius);

Файл, содержащий   graphics.h
прототип

Описание           pieslice рисует и закрашивает сектор круга с
                   центром в точке (x,y) и радиусом radius. Сектор
                   рисуется от угла stangle до угла endangle. Сектор
                   вычерчивается текущим цветом и закрашивается те-
                   кущим цветом закраски с помощью текущего шаблона.

                   Угол для pieslice измеряется в градусах и отсчи-
                   тывается против часовой стрелки, где 0 градусов
                   соответствует 3 часам на циферблате, 90 градусов
                   - 12 часам и т.д.

                   Замечание. Если вы используете CGA или монохром-
                   ный адаптер, примеры на использование графических
                   функций, приведенные в этой книге, могут не дать
                   ожидаемого результата. Если ваша система работает
                   на CGA или монохромном адаптере, используйте зна-
                   чение 1 вместо символической константы цвета.

                   Смотрите второй приведенный пример на использова-
                   ние функций pieslice,приведенный в разделе функ-
                   ции arc. (В функции arc приведен только один при-
                   мер, повидимому это опечатка. Прим. пер.)

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

Переносимость      Эта функция уникальна для Turbo C++. Она работа-
                   ет только на компьютерах IBM PC и совместимых с
                   ними, оснащенных дисплейными адаптерами, поддер-
                   живающими графический режим.

Смотрите также      fillellipse fill_patternsперечисляемый тип),
                    graphresult sector setfillstyle

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int midx,midy;
int stangle = 45,endangle = 135;
int radius = 100;

/* инициализация графики и локальных переменных */

initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
/* определить тип закраски и нарисовать сектор */
setfillstyle(EMPTY_FILL,getmaxcolor());
pieslice(midx,midy,stangle,endangle,radius);

/* очистка */
getch();
closegraph();
return 0;


cpp

poke
Функция            Записывает значение в память по адресу
                   segment:offset.

Синтаксис          void poke(unsigned segment, unsigned offset,
                                                         int value);

Файл, содержащий   dos.h
прототип

Описание           Функция poke записывает целое значение value в
                   память по адресу segment:offset, где segment -
                   адрес сегмента, offset- смещение.

                   Если функция вызывается при подключенном файле
                   dos.h, она трактуются, как макрокоманда, которая
                   расширяется до встроенного кода. Если же вы не
                   подключаете файл dos.h (или вы выполнили для дан-
                   ной функции директиву #undef), вы будете иметь
                   функцию, а не макрокоманды.

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

Переносимость      Функция уникальна для семейства микропроцессоров
                   8086.

Смотрите также      harderr peek pokeb

Пример:

#include
#include

int main(void)
{
   clrscr();
   cprintf("Убедитесь, что Scroll lock выключена, и нажмите\
            любую клавишу...\n");
   getch();
   poke(0x0000,0x417,16);
   cprintf("Теперь Scroll lock включена. \n");
   return 0;


cpp

pokeb
Функция            Помещает заданный байт в память по адресу
                   segment:offset.

Синтаксис          #include
                   void pokeb(unsigned segment, unsigned offset,
                                                         char value);

Файл, содержащий   dos.h
прототип

Описание           Функция pokeb записывает значение байта value в
                   память по адресу segment:offset, где segment -
                   адрес сегмента, offset- смещение.

                   Если функция вызывается при подключенном файле
                   dos.h, она трактуются, как макрокоманда, которая
                   расширяется до встроенного кода. Если же вы не
                   подключаете файл dos.h (или выполните для данной
                   функции директиву #undef), вы будете иметь функ-
                   цию, а не макрокоманду.

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

Переносимость      Функция уникальна для семейства микропроцессоров
                   8086.

Смотрите также      peekb poke

Пример:

#include
#include

int main(void)
{
   clrscr();
   cprintf("Убедитесь, что Scroll lock выключена, и нажмите\
            любую клавишу...\n");
   getch();
   pokeb(0x0000,0x417,16);
   cprintf("Теперь Scroll lock включена. \n");
   return 0;


cpp

polar
Функция            Возвращает комплексное число в соответствии с ве-
                   личиной и углом.

Синтаксис          #include
                   complex polar(double mag, double angle);

Файл, содержащий   complex.h
прототип

Описание           polar(mag,angle) аналогично выражению:
                   complex(mag*cos(angle),mag*sin(amgle)).

Возвращаемое       Комплексное число, для данного абсолютного значе-
значение           ния и угла.

Переносимость      Комплексные функции требуют С++, и поэтому непере-
                   носимы.
Смотрите также      arg complex norm

Пример:

#include
#include

int main(void)
{
   double x = 3.1, y = 4.2;
   complex z = complex(x,y);
   cout << "z =" << z  << "\n";
   cout << "имеет вещественную часть = " << real(z) << "\n";
   cout << "и мнимую часть = " << imag(z) << "\n";
   cout << "z имеет комплексное сопряжение = " << conj(z) << "\n";

   double mag = sqrt(norm(z));
   double ang = arg(z);
   cout << "Полярная форма z:\n"
   cout << "Величина = " << mag << "\n";
   cout << "Угол (в радианах) = " << ang << "\n";
   cout << "Восстановление из полярной формы: \n";
   cout << "   z = " << polar(mag,ang) << "\n";
   return 0;


cpp

poly
Функция            Конструирует из заданных аргументов полином.

Синтаксис          #include
                   double poly(double x, int degree, double coeff[]);

Файл, содержащий   math.h
прототип

Описание           Функция poly конструирует полином от x степени
                   degree с коэффициентами coeff[0], coeff[1],
                   ...coeff[n]. Например, если n=4, сконструирован-
                   ный полином будет выглядеть следующим образом:

                   coeff[4]x^4 + coeff[3]x^3 + coeff[2]x^2 +
                      coeff[1]x + coeff[0]

Возвращаемое       Функция poly возвращает вычисленное для данного x
значение           значение полинома.

Переносимость      Функция поддерживается на системах UNIX.

Пример:

#include
#include

/*  полином: x**3 - 2*x**2 + 5*x - 1 */

int main(void)
{
   double array[] = {-1.0,5.0,-2.0,1.0};
   double result;
   result = poly(2.0,3,array);
   printf("Полином x**3-2*x**2+5*x-1 при x=2.0 равен: %lf\n",
           result);
   return 0;


cpp

pow
Функция            Вычисляет x в степени y.

Синтаксис          Вещественная версия
                   #include
                   double pow(double x, double y);

                   Комплексная версия
                   #include
                   complex pow(complex x,complex y);
                   complex pow(complex x,double y);
                   complex pow(double x,complex y);

Файл, содержащий   Вещественная версия       Комплексная версия
прототип           math.h                    complex.h

Описание           pow вычисляет x^y.

                   Комплексная версия определена следующим образом:

                   pow(base,expon) = exp(expon log(base))

Возвращаемое       При успешном завершении, pow возвращает вычислен-
значение           ное значение, x^y.

                   Иногда, аргумент посылаемый pow вызывает в ре-
                   зультате переполнение, или он вообще может быть
                   не вычислимым. При переполнении, pow возвращает
                   значение HUGE_VAL. При слишком большом значении,
                   глобальной переменной errno присваивается значе-
                   ние:

                   ERANGE - Результат выходит за пределы.

                   Если аргумент x меньше или равен 0, и y не равен
                   0, то при этом errno присваивается значение

                   EDOM - Ошибка области определения.

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

                   Если и x и y равны 0, то pow возвращает 1.

                   Обработку ошибок функции pow можно изменить с по-
                   мощью функции matherr.

Переносимость      Вещественная версия pow доступна в системах UNIX
                   и поддерживантся стандартом ANSI C. Комплексная
                   версия требует С++ и поэтому скорее всего непере-
                   носима.

Смотрите также      complex exp pow0, sqrt

Пример:

#include
#include

int main(void)
{
   double x = 4.0,y=3.0;
   printf("%lf в степени %lf = %1f\n",x,y,pow(x,y));
   return 0;


cpp

pow10
Функция            Вычисляет 10 в степени p.

Синтаксис          #include
                   double pow10(int p);

Файл, содержащий   math.h
прототип

Описание           pow10 вычисляет 10^p.

Возвращаемое       При успешном завершении pow10 возвращает вычислен-
значение           ное значение 10^p.

                   Результат вычисляется в виде double. Все аргумен-
                   ты считаются допустимыми, даже, если вызывают пе-
                   реполнение.

Переносимость      Доступна в системах UNIX.

Смотрите также      exp pow

Пример:

#include
#include

int main(void)
{
   int p=3;
/* !!! в оригинале double p = 3.0; прим. пер. */
   printf("10 в степени %d = %1f\n",p,pow10(p));
   return 0;


cpp

printf
Функция            Производит форматированный вывод в stdout.

Синтаксис          #include
                   int printf(const char *format [,argument, ...]);

Файл, содержащий   stdio.h
прототип

Описание           printf получает набор аргументов, применяет к каж-
                   дому соответствующую спецификацию формата из
                   строки format, и выводит форматированные данные в
                   stdout. Число аргументов должно соответствовать
                   числу спецификаций формата в format.

                              Строка формата.

                   Строка формата, представленная в каждом вызове
                   функций семейства ...printf, управляет тем, как
                   каждая из функций будет преобразовывать, формати-
                   ровать и печатать свои аргументы. Для формата
                   должно быть достаточно аргументов, иначе резуль-
                   таты могут быть непредвиденными, и, скорее всего,
                   неверными. Лишние аргументы (если их количество
                   больше, чем требуется в формате) будут игнориро-
                   ваться.

                   Строка формата - это символьная строка, состоящая
                   из двух типов объектов - просто символы и специ-
                   фикации преобразования.

                   - Простые символы переносятся в вывод без измене-
                     ний.

                   - Спецификации преобразования применяются для
                     форматирования.

                           Спецификации формата.

                   Спецификации формата для функций семейства ...
                   printf имеют следующую форму:

                    %[флаги] [ширина] [.точность] [F|N|h|l|L] type
                   Каждая спецификация начинается с символа процента
                   (%). После процента следуют признаки в порядке:

                   - необязательная последовательность [flags] сим-
                     волов-флагов;

                   - необязательная спецификация [width] ширины;

                   - необязательная спецификация [.prec] точности;

                   - необязательный модификатор [F|N|h|l|L] входного
                     размера;

                   - символ типа преобразования [type].

                        Необязательные компоненты строки формата.

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

-----------------T---------------------------------------------------
 Символ или      ¦  Как они управляют форматом
 спецификация    ¦
-----------------+---------------------------------------------------
 flags (флажки)  ¦ выравнивание вывода, знак числа, десятичная
                 ¦ точка, хвостовые нули, восьмеричные и десятичные
                 ¦ префиксы.
                 ¦
 width (ширина)  ¦ максимальное число печатаемых символов, включая
                 ¦ пробелы и нули.
                 ¦
 precision       ¦ максимальное число печатаемых символов; для целых
 (точность)      ¦ чисел максимальное число цифр.
                 ¦
 size (размер)   ¦ отвергает размер аргумента по умолчанию
                 ¦ (N- ближний указатель, F- дальний указатель,
                 ¦  h- короткое целое, l- длинное целое, L - long
                 ¦                                           double).
-----------------+---------------------------------------------------

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

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

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

--------------T------------T-----------------------------------------
 Символ       ¦ Входной    ¦ Выходной аргумент
преобразования¦ аргумент   ¦
--------------+------------+-----------------------------------------
                           числовые данные
--------------T------------T-----------------------------------------
     d        ¦  целое     ¦ целое десятичное со знаком
     i        ¦  целое     ¦ целое десятичное со знаком
     o        ¦  целое     ¦ целое восьмеричное без знака
     u        ¦  целое     ¦ целое десятичное без знака
     x        ¦  целое     ¦ целое шестнадцатеричное без знака
              ¦            ¦ (с буквами a, b, c, d, e, f)
     X        ¦  целое     ¦ целое шестнадцатеричное без знака
              ¦            ¦ (с буквами A, B, C, D, E, F).
     f        ¦с плавающей ¦ значение со знаком в форме [-]dddd.
              ¦  точкой    ¦ dddd
     e        ¦с плавающей ¦ значение со знаком в форме [-]d.dddd
              ¦  точкой    ¦ e[+/-]ddd
     g        ¦с плавающей ¦ значение со знаком либо в форме f, либо
              ¦  точкой    ¦ в форме e, с данным значением и точнос-
              ¦            ¦ тью. Хвостовые нули и десятичная точка
              ¦            ¦ печатаются только при необходимости
     E        ¦с плавающей ¦ так же, как в случае e, только с буквой
              ¦  точкой    ¦ E для обозначения степени
     G        ¦с плавающей ¦ так же, как в случае g, только с буквой
              ¦  точкой    ¦ E для обозначения степени
--------------+------------+-----------------------------------------
                          Символьные данные.
--------------T------------T-----------------------------------------
     C        ¦ символьное ¦ один символ
     S        ¦ указатель  ¦ печатает символы до тех пор, пока не
              ¦ на строку  ¦ встретится нулевое окончание, либо не
              ¦            ¦ будет достигнута точность.
     %        ¦ нет символа¦ печатается только знак %.
--------------+------------+-----------------------------------------
                              Указатели
--------------T------------T-----------------------------------------
     n        ¦ указатель  ¦ сохраняется (по адресу, указанному во
              ¦ на целое   ¦ входном аргументе) кол-во только что за-
              ¦            ¦ писанных символов.
     P        ¦ указатель  ¦ печатает входной аргумент,как указатель;
              ¦            ¦ дальние указатели печатаются, как
              ¦            ¦ XXXX:YYYY, ближние указатели печатаются,
              ¦            ¦ как YYYY (только смещение).
--------------+------------+-----------------------------------------

                                Соглашения.

                   В нижеследующей таблице перечислены некоторые
                   соглашения, сопровождающие данные спецификации.

------------T--------------------------------------------------------
  Символы   ¦     Соглашения
------------+--------------------------------------------------------
 e или E    ¦ аргумент преобразуется в соответствии с шаблоном:
            ¦ [-]d.ddd...e[+/-]ddd, где
            ¦ - одна цифра предшествует десятичной точке;
            ¦ - число цифр после десятичной точки равно точности;
            ¦ - степень всегда содержит три цифры.
    f       ¦ аргумент преобразуется в десятичную форму в соответст-
            ¦ вии с шаблоном [-]ddd.ddd..., где число десятичных
            ¦ цифр после запятой равно точности (если дана ненулевая
            ¦ точность).
 g или G    ¦ аргумент печатается по принципу e, E или f, с точнос-
            ¦ тью, обозначающей число значащих цифр.
            ¦ Хвостовые нули удаляются, десятичная точка ставится
            ¦ только при необходимости.
            ¦ аргумент печатается по принципу e или f (с некоторыми
            ¦ ограничениями), если символ преобразования g; и по
            ¦ принципу E, если символ преобразования G.
            ¦ Принцип e используется только в том случае, если экспо-
            ¦ нента, полученная в результате либо а) больше, чем точ-
            ¦ ность; б) меньше чем -4.
 x или X    ¦ Для преобразований типа x - в выводе будут буквы a, b,
            ¦ c, d, e.
            ¦ Для преобразований типа X - в выводе будут буквы A, B,
            ¦ C, D, E.
------------+---------------------------------------------------------

Замечание. Неопределенные значения с плавающей
точкой печатаются как +INF или -INF. Не числа по
IEEE печатаются как +NAN или -NAN.

                             Символы - флаги.

                   Символы - флажки это минус(-), плюс(+), диез(#) и
                   пусто( ); Они могут появляться в любом порядке и
                   комбинации.

-----------T---------------------------------------------------------
 Флаг      ¦      Что это означает
-----------+---------------------------------------------------------
   -       ¦ Левое выравнивание результата, пробелы остаются справа.
           ¦ Если не задан, результат выравнивается справа, заполня-
           ¦ ется пробелами или нулями слева.
   +       ¦ Знаковое преобразование - результат всегда начинается со
           ¦ знака (+) или (-).
   пусто   ¦ Если значение неотрицательно, вывод начинается с пробе-
           ¦ ла вместо плюса; отрицательные значения всегда начина-
           ¦ ются со знака минус.
   #       ¦ Специфицирует, что преобразуемый аргумент используется в
           ¦ "альтернативной" форме. Смотрите следующую таблицу.
-----------+---------------------------------------------------------

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

                   Альтернативная форма.

                   Если флаг # используется вместе с символом преоб-
                   разования, при конвертировании аргумента (arg)
                   это даст следующий результат:

------------------T--------------------------------------------------
 Символ           ¦    Как # влияет на результат
 преобразования   ¦
------------------+--------------------------------------------------
c, s, d, i, u     ¦ Не оказывает влияния.
      0           ¦ 0 предшествует ненулевому arg
    x или X       ¦ 0x (или 0X) предшествует arg
  e, E или f      ¦ Результат всегда будет содержать десятичную точ-
                  ¦ ку, даже если за точкой не следует никаких цифр.
                  ¦ Обычно, десятичная точка появляется в результате,
                  ¦ только если за ней следует цифра.
   g или G        ¦ Аналогично e или E, с дополнением, что хвостовые
                  ¦ нули не удаляются.
------------------+--------------------------------------------------

                   Спецификация ширины.

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

                   Ширина задается одним из двух способов:

                   - непосредственно, с помощью строки десятичных
                     цифр;

                   - или косвенно с помощью знаков (*).

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

--------------T------------------------------------------------------
 Спецификация ¦       Как это влияет на ширину вывода
 ширины       ¦
--------------+------------------------------------------------------
   n          ¦ Печатаются по крайней мере n символов. Если выводи-
              ¦ мое значение меньше, чем n символов, вывод заполня-
              ¦ ется пробелами (выравнивание справа, если задан флаг
              ¦ "-", в противном случае - левое выравнивание).
   0n         ¦ Печатается по крайней мере n символов. Если выводное
              ¦ значение содержит менее n символов, оно заполняется
              ¦ слева нулями.
   *          ¦ Спецификация ширины ставится в списке аргументов
              ¦ перед соответствующим аргументом.
--------------+------------------------------------------------------

                          Спецификация точности.

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

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

---------------T-----------------------------------------------------
 Спецификация  ¦        Как это влияет на вывод
 точности      ¦
---------------+-----------------------------------------------------
 (не дана)     ¦ Точность устанавливается по умолчанию (стандартно
               ¦ =1 для типов d, i, o, u, x, X;
               ¦ =6 для типов e, E, f;
               ¦ = все значащие цифры для типов g, G;
               ¦ = печать первого нулевого символа для типа S;
               ¦   не влияет на тип c)
    .0         ¦ Для типов d, i, o, u, x точность устанавливается по
               ¦ умолчанию.
               ¦ Для типов e, E, f десятичная точка не печатается.
    .n         ¦ Печатаются n символов или n десятичных знаков; если
               ¦ выводимое значение содержит больше n символов, оно
               ¦ может быть усечено или округлено. (Случится это или
               ¦ нет, зависит от символьного типа).
     *         ¦ Спецификация точности задается в списке аргументов,
               ¦ причем она предшествует значению форматируемого ар-
               ¦ гумента.
---------------+-----------------------------------------------------

Замечание. Если указана нулевая точность, и спецификатор формата для
целого значения (т.е. d, i, o, u, x), и печатаемое значение равно 0,
то в этом случае не будут выводится цифровые символы, т.е. поле бу-
дет пустое.

---------------T-----------------------------------------------------
 Символ        ¦ Как спецификация точности влияет на преобразование
преобразования ¦
---------------+-----------------------------------------------------
     d         ¦ .n показывает, что будет напечатано по крайней мере
     i         ¦ n цифр. Если выводимый аргумент имеет менее n цифр,
     o         ¦ свободные места в выводе забиваются слева нулями.
     u         ¦ Если же выводимый аргумент имеет больше n цифр, вы-
     x         ¦ ходное значение не усекается.
     X         ¦
               ¦
     e         ¦ .n показывает, что после десятичной точки будет на-
     E         ¦ печатано n символов, причем последняя цифра округ-
     f         ¦ ляется.
               ¦
     g         ¦ .n определяет, что будет напечатано максимально n
               ¦ значащих цифр.
     G         ¦
               ¦
     c         ¦ .n не имеет влияния на вывод
               ¦
     s         ¦ .n определяет, что будет напечатано не больше, чем
               ¦  n символов.
---------------+-----------------------------------------------------

                       Модификатор входного размера.

                   Символ - модификатор входного размера (F, N, h, l
                   или L) дает размер последующего входного аргумен-
                   та:

                   F = дальний указатель;
                   N = ближний указатель;
                   h =  короткое целое;
                   l = длинное целое;
                   L = длинное двойной точности;

                   Модификаторы входного размера (F, N, h, l и L)
                   влияют на то, каким образом функции ...printf ин-
                   терпретируют тип данных соответствующего входного
                   аргумента arg. Модификаторы F и N применяются
                   только к тем входным аргументам arg, которые
                   представляют собой указатели (%p, %s и %n). Моди-
                   фикаторы h, l и L применяются к числовым аргумен-
                   там (целые и с плавающей точкой).

                   Оба модификатора F и N интерпретируют входной ар-
                   гумент arg. Обычно, для преобразований %p, %s,
                   или %n аргумент arg - это указатель стандартного
                   размера для соответствующей модели памяти. F оз-
                   начает: "интерпретировать arg, как дальний указа-
                   тель". N означает: "интепретировать arg, как
                   ближний указатель".

                   Модификаторы h, l и L отвергают стандартный раз-
                   мер числовых данных входных аргументов: l и L
                   применяется к целым типам данных (d, i, o, u, x,
                   X) и типам данных с плавающей точкой (e, E, f, g
                   и G), в то время как h применяется только к целым
                   данным. Ни h, ни l- модификаторы не оказывают ни-
                   какого влияния на типы символов(c,s) или указате-
                   лей(p,n).

------------------T--------------------------------------------------
 Модификаторы     ¦       Как  интерпретируется аргумент
входного размера  ¦
------------------+--------------------------------------------------
      F           ¦ аргумент arg читается, как дальний указатель.
      N           ¦ аргумент arg читается, как ближний указатель.
                  ¦ в сверх-больших моделях памяти N  не может ис-
                  ¦ пользоваться ни с каким типом преобразований.
      h           ¦ для типов преобразований d, i, o, u, x, X аргумент
                  ¦ arg интерпретируется, как короткое целое;
      l           ¦ для типов преобразований d, i, o, u, x, X аргумент
                  ¦ интерпретируется, как длинное целое;
                  ¦ для типов преобразований e, E, f, g, G аргумент ин-
                  ¦ терпретируется как число двойной точности.
      L           ¦ интерпретирует arg как длинное с двойной точ-
                  ¦ ность для типов преобразований e, E, f, g, G.
------------------+--------------------------------------------------

Возвращаемое       Каждая функция возвращает количество выводимых
значение           байт. В случае ошибки printf возвращает EOF.

Переносимость      printf поддерживается на системах UNIX и определена
                   в стандарте Кернигана и Ритчи. Поддерживается
                   стандартом ANSI C.

Смотрите также      cprintf ecvt fprintf fread fscanf putc puts
                    putw scanf sprintf vprintf vsprintf

Пример:

#define I 555
#define R 5.5

int main(void)
{
   int i, j, k, l;
   char buf[7];
   char *prefix = &buf;
   char tp[20];
   printf("prefix   6d   6o   8x   10.2e   10.2f\n");
   strcpy(prefix, "%");
   for (i=0; i<2; i++){
     for (j=0; j<2; j++)
      for (k=0; k<2; k++)
       for (l=0; l<2; l++)
       {
         if (i==0)  strcat(prefix,"-");
         if (j==0)  strcat(prefix,"+");
         if (k==0)  strcat(prefix,"%");
         if (l==0)  strcat(prefix,"0");
         printf("%5s !",prefix);
         strcpy(tp, prefix);
         strcat(tp, "6d !");
         printf(tp, I);
         strcpy(tp,"");
         strcpy(tp, prefix);
         strcat(tp, "6o !");
         printf(tp, I);
         strcpy(tp,"");
         strcpy(tp,prefix);
         stpcat(tp, "8x !");
         printf(tp,I);
         stpcry(tp,"");
         stpcry(tp, prefix);
         strcat(tp, "10.2e !");
         printf(tp, R);
         strcpy(tp, prefix);
         strcat(tp, "10.2f !");
         printf(tp,R);
         printf(" \n");
         stpcry(prefix, "%");
        }
   }
}

prefix     6d    6o      8x        10.2e       10.2f

%-+#0 !+00555 !01053  !0x0022b  !+5.50e+000 !+000005.50 !
 %-+# !+555   !01053  !0x22b    !+5.50e+000 !+5.50      !
 %-+0 !+00555 !01053  !000022b  !+5.50e+000 !+000005.50 !
  %-+ !+555   !1053   !22b      !+5.50e+000 !+5.50      !
 %-#0 !000555 !001053 !0x00022b !05.50e+000 !0000005.50 !
  %-# !555    !01053  !0x22b    !5.50e+000  !5.50       !
  %-0 !000555 !001053 !0000022b !05.50e+000 !0000005.50 !
   %- !555    !1053   !22b      !5.50e+000  !5.50       !
 %+#0 !+00555 ! 01053 ! 0x0022b !+5.50e+000 !+000005.50 !
  %+# !  +555 ! 01053 !   0x22b !+5.50e+000 !     +5.50 !
  %+0 !+00555 ! 01053 ! 000022b !+5.50e+000 !+000005.50 !
   %+ !  +555 !  1053 !     22b !+5.50e+000 !     +5.50 !
  %#0 !000555 !001053 !0x00022b !05.50e+000 !0000005.50 !
   %# !   555 ! 01053 !   0x22b ! 5.50e+000 !      5.50 !
   %0 !000555 !001053 !0000022b !05.50e+000 !0000005.50 !
    % !   555 !  1053 !     22b ! 5.50e+000 !      5.50 !


cpp

putc
Функция            Выводит символ в поток.

Синтаксис          #include
                   int putc(int c, FILE *stream);

Файл, содержащий   stdio.h
прототип

Описание           Функция putc представляет собой макрокоманду, ко-
                   торая выводит символ c в указанный выходной поток
                   stream.

Возвращаемое       При успешном завершении функция putc, возвращают
значение           символ c. При возникновении ошибки функция
                   возвращают значение EOF.

Переносимость      Функция поддерживается в системах UNIX и стандар-
                   том ANSI C. Функция putc определены в стандарте
                   Кернигана и Ритчи.

Смотрите также      fprintc fputc fputch fputchar fputs fwrite
                    getc getchar printf putch putchar putw
                    vprintf

Пример:

#include

int main(void)
{
   char msg[] = "Hello world";
   int i=0;
   while(msg[i])
      putc(msg[i++],stdout);
   return 0;


cpp

putch
Функция            Выводит символ на экран.

Синтаксис          #include
                   int putch(int c);

Файл, содержащий   conio.h
прототип

Описание           putch выводит символ c в текущее текстовое окно.
                   Эта функция производит вывод в текстовом режиме
                   непосредственно на консоль. putch не преобразует
                   символ перевода строки (\n) в пару: перевод
                   строки, возврат каретки.

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

Возвращаемое       При успешном завершении putch возвращает выведен-
значение           ный символ c. При ошибке он возвращает EOF.

Переносимость      putch работает только на компьютерах совместимых с
                   IBM PC.

Смотрите также      cprintf cputs getch getche putc putchar

Пример:

#include
#include

int main(void)
{
   char ch = 0;
   printf("Введите строку:");
   while(ch != '\r')
   {
      ch = getch();
      putch(ch);
   }
   return 0;


cpp

putchar
Функция            Выводит символ в поток stdout.

Синтаксис          #include
                   int putchar(int c);

Файл, содержащий   stdio.h
прототип

Описание           putchar это макрокоманда, определенная как
                   putc(ch,stdout);

Возвращаемое       При успешном завершении putchar возвращает выведен-
значение           ный символ c. При ошибке он возвращает EOF.

Переносимость      putchar доступна в системах UNIX и поддерживается
                   стандартом ANSI C. Определена также у Кернигана и
                   Ричи.

Смотрите также      fputchar getc getchar printf putc putch puts
                    putw vprintf

Пример:

#include

/* определение некоторых символов, предназначенных для рисования
   рамок */
#define LEFT_TOP  0xDA
#define RIGHT_TOP 0xBF
#define HORIZ     0xC4
#define VERT      0xB3
#define LEFT_BOT  0xC0
#define RIGHT_BOT 0xD9

int main(void)
{
   char i,j;
   /* нарисовать верхнюю часть рамки */
   putch(LEFT_TOP);
   for(i=0;i<10;i++)
      putch(HORIZ);
   putch(RIGHT_TOP);
   /* нарисовать центральную часть */
   for(i=0; i<4; i++)
   {
      putch(VERT);
      for(j=0;j<10;j++)
         putch(' ');
      putch(VERT);
      putch('\n');
   }
   /* нарисовать нижнюю часть рамки */
   putch(LEFT_BOT);
   for(i=0;i<10;i++)
      putch(HORIZ);
   putch(RIGHT_BOT);
   putch('\n');
   return 0;


cpp

putenv
Функция            Добавляет строку символов в текущее описание
                   среды.

Синтаксис          #include
                   int putenv(const char *name);

Файл, содержащий   stdlib.h
прототип

Описание           putenv получает строку name и добавляет ее к опи-
                   санию среды текущего процесса. Например:

                       putenv("PATH=C:\\TC");

                   putenv можно также использовать для модификации
                   или удаления уже существующих переменных среды
                   текущего процесса. Для удаления надо просто доба-
                   вить пустую переменную (к примеру "MYVAR=").

                   putenv изменяет среду только текущего процесса.
                   При завершении процесса восстанавливается исход-
                   ная среда.

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

Возвращаемое       При успешном завершении putenv возвращает 0, при
значение           ошибке -1.

Переносимость      putenv доступна в системах UNIX.

Смотрите также      getenv

Пример:

#include
#include
#include
#include
#include

int main(void)
{
   char *path, *ptr;
   int i=0;
   /* получить значение переменной среды PATH */
   ptr = getenv("PATH");
   /* создать новое значение */
   path = malloc(strlen(ptr)+15);
   strcpy(path,"PATH=");
   strcat(path,ptr);
   strcat(path,";c:\\temp");
   /* занести его в переменную */
   putenv(path);
   while(environ[i])
      printf("%s\n",environ[i++]);
   return 0;


cpp

putimage
Функция            Выводит на экран битовый образ.

Синтаксис          #include
                   void far putimage(int left,int top,
                                      void far *bitmap,int op);

Файл, содержащий   graphics.h
прототип

Описание           putimage помещает битовый образ, ранее со-
                   храненный с помощью getimage, обратно на экран,
                   где левый верхний угол образа находится в точке
                   (left,top). bitmap указывает область памяти в ко-
                   тором хранится требуемый образ.

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

                   Перечень значений putimage_op (как определено в
                   graphics.h) дает названия следующим операциям:

                   -------------------------------------------
                   ИМЯ          ЗНАЧ.       ОПИСАНИЕ
                   -------------------------------------------
                   COPY_PUT      0          копия
                   XOR_PUT       1          исключающее "или"
                   OR_PUT        2          "или"
                   AND_PUT       3          " и "
                   NOT_PUT       4          копия источника с
                                            инверсией
                   -------------------------------------------

                   Другими словами, COPY_PUT скопирует побитный об-
                   раз источника на экран, XOR_PUT выполнит операцию
                   ИСКЛЮЧАЮЩЕЕ ИЛИ над уже находящемся на экране об-
                   разом, OR_PUT выполнит операцию ИЛИ над уже нахо-
                   дящемся на экране образом и т.д.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      getimage imagesize putpixel setvisualpage

Пример:

#include
#include
#include
#include

#define ARROW_SIZE 10

void draw_arrow(int x,int y);

int main(void)
{
int graphdriver = DETECT, gmode, errorcode;
void *arrow;
int x,y,maxx;
unsigned int size;

/* инициализация драйвера и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxx = getmaxx();
x = 0;
y = getmaxy()/2;
/* нарисовать перемещаемый объект */
draw_arrow(x,y);
/* определить размер памяти, для хранения изображения */
size = imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE);
/* выделить память */
arrow = malloc(size);
/* взять изображение */
getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow);
/* продолжать, пока не будет нажата клавиша */
while(!kbhit())
{
   /* стереть старый образ */
   putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
   x += ARROW_SIZE;
   if(x >= maxx)
      x = 0;
   /* нарисовать изображение */
   putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
}

free(arrow);
closegraph();
return 0;
}

void draw_arrow(int x,int y)
{
   /* нарисовать на экране стрелку */
   moveto(x,y);
   linerel(4*ARROW_SIZE,0);
   linerel(-2*ARROW_SIZE,-1*ARROW_SIZE);
   linerel(0,2*ARROW_SIZE);
   linerel(2*ARROW_SIZE,-1*ARROW_SIZE);


cpp

putpixel
Функция            выводит пиксель в заданную точку экрана.

Синтаксис          #include
                   void far putpixel(int x, int y,int color);

Файл, содержащий   graphics.h
прототип

Описание           putpixel отображает точку цвета color и с
                   координатами (x,y).

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      getpixel putimage

Пример:

#include
#include
#include
#include
#include

#define PIXEL_COUNT 1000
#define DELAY_TIME 100 /* в миллисекундах */

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y,i,color,maxx,maxy,maxcolor,seed;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxx = getmaxx();
maxy = getmaxy();
maxcolor = getmaxcolor()+1;
while(!kbhit())
{
/* сбросить генератор случайных чисел */
seed = random(32767);
srand(seed);
for(i=0;i


cpp

puts
Функция            Выводит строку в поток stdout.

Синтаксис          #include
                   int puts(const char *s);

Файл, содержащий   stdio.h
прототип

Описание           Функция puts копирует строку символов с нулевым
                   окончанием в стандартный выходной поток stdout,
                   причем добавляет в конец символ перехода на новую
                   строку.

Возвращаемое       При успешном завершении, функция puts ненулевое
значение           значение. В противном случае возвращается EOF.

Переносимость      Данная функция поддерживается на системах UNIX и
                   стандартом ANSI C.

Смотрите также      cputs fputs gets printf putchar


cpp

puttext
Функция            Копирует текст из памяти на экран, в текстовом ре-
                   жиме.

Синтаксис          #include
                   int puttext(int left, int top, int right,
                                   int bottom, void *source);

Фйал, содержащий   conio.h
прототип

Описание           puttext помещает содержимое области памяти, адре-
                   суемой параметром source, в прямоугольник на эк-
                   ране, определяемый параметрами left, top, right,
                   bottom.

                   Все координаты являются абсолютными координатами
                   экрана, а не текстового окна. Левый верхний угол
                   экрана имеет координаты (1,1).

                   puttext размещает на экране содержимое памяти
                   последовательно, слева на право и сверху вниз.

                   puttext работает в текстовом режиме и производит
                   непосредственный вывод на экран.

Возвращаемое       При успешном завершении puttext возвращает ненуле-
значение           вое значение. При ошибке (к примеру, если указан-
                   ные координаты лежат вне пределов экрана для дан-
                   ного режима) puttext возвращает 0.

Переносимость      puttext работает только на компьютерах, имеющих
                   совместимую с IBM PC BIOS.

Смотрите также      gettext movetext window


cpp

putw
Функция            Помещает в поток целое значение.

Синтаксис          #include
                   int putw(int w, FILE *stream);

Файл, содержащий   stdio.h
прототип

Описание           putw выводит целое в указанный поток. Данная функ-
                   ция не вызывает и не ожидает никакого специально-
                   го выравнивания в файле.

Возвращаемое       При успешном завершении putw возвращает выведенное
значение           целое w. При ошибке возвращает EOF.

                   Т.к. EOF является допустимым целым значением, то
                   для определения ошибки нужно воспользоваться фун-
                   кцией ferror.

Переносимость      функция поддерживается в системах UNIX.

Смотрите также      getw printf

Пример:

#include
#include

#define FNAME "test.$$$"

int main(void)
{
   FILE *fp;
   int word;
   /* записать в файл слово */
   fp = open(FNAME,"wb");
   if(fp==NULL)
   {
      printf("Ошибка при открытии файла\n");
      exit(1);
   }
   word = 94;
   putw(word,fp);
   if(ferror(fp))
      printf("Ошибка, при записи в файл\n");
   else
      printf("Успешная запись в файл\n");
   fclose(fp);
   /* повторное открытие файла */
   fp = fopen(FNAME,"rb");
   if(fp==NULL)
   {
      printf("Ошибка при открытии файла%s\n",FNAME);
      exit(1);
   }
   word = getw(fp);
   if(ferror(fp))
      printf("Ошибка, при чтении из файла\n");
   else
      printf("Успешное чтение в файле, word = %d\n",word);
   fclose(fp);
   unlink(FNAME);
   return 0;


cpp

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

Синтаксис          #include
                   void qsort(void *base, size_t nelem, size_t width,
                             int(*fcmp)(const void *, const void *));

Файл, содержащий   stdlib.h
прототип

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

                   - base адресует базу (нулевой элемент) сортируе-
                     мой таблицы.

                   - nelem - число элементов таблицы;

                   - width - размер каждого элемента таблицы в бай-
                     тах.

                   Функция *fcmp - функция сравнения - получает два
                   аргумента elem1 и elem2, которые представляют со-
                   бой два указателя на 2 элемента таблицы. Функция
                   сравнения *fcmp сравнивает между собой два адре-
                   суемых элемента таблицы (*elem1 и *elem2) и возв-
                   ращает в зависимости от результата сравнения це-
                   лое число.

                   Если элементы:        *fcmp возвращает:
                   --------------------------------------------------
                   *elem1<*elem2          целое <0
                   *elem1==*elem2         0
                   *elem1>elem2           целое >0
                   --------------------------------------------------

                   При сравнении символ "меньше, чем" (<) означает,
                   что левый элемент в конце сортировки должен ока-
                   заться перед правым аргументом. Аналогично, сим-
                   вол "больше, чем" (>) означает, что в конце сор-
                   тировки левый элемент должен оказаться после пра-
                   вого.

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

Переносимость      Функция поддерживается на системах UNIX и стандар-
                   том ANSI C.

Смотрите также      bsearch lsearch

Пример:

#include
#include
#include

int sort_function(const void *a,const void *b);

char list[5][4] = {"cat", "car", "cab", "cap", "can"};

int main(void)
{
int x;
qsort((void *)&list, 5, sizeof(list[0]), sort_function);
for(x=0; x<5, x++)
    printf("%s\n",list[x]);
}

int sort_function(const void *a,const void *b)
{
   return(strcmp(a,b));
}
Вывод:
cab
can
cap
car
cat


cpp

raise
Функция            Посылает программный сигнал выполняемой программе.

Синтаксис          #include
                   int raise(int sig);

Файл, содержащий   signal.h
прототип

Описание           raise посылает сигнал sig программе. Если програм-
                   ма загрузила процедуру обработки сигнала, для
                   сигнала sig, то запускается данная процедура. Ес-
                   ли процедуры обработки для данного сигнала нет,
                   то производятся действия, определенные для данно-
                   го сигнала по умолчанию.

                   Имеются следующие типы сигналов, определенные в
                   файле signal.h:

                   --------------------------------------------------
                   Сигнал         Значение
                   --------------------------------------------------
                   SIGABRT        Ненормальное завершение (*)
                   SIGFPE         Неверная операция над числами с
                                  плавающей точкой
                   SIGILL         Неверная инструкция (#)
                   SIGINT         Прерывание по Ctrl_Break.
                   SIGSEGV        Неверный доступ к памяти (#)
                   SIGTERM        Запрос на завершение программы (*)
                   --------------------------------------------------

                   Сигналы помеченные (*) не генерируются DOS или
                   Turbo C++, во время нормальной работы. Однако они
                   могут генерироваться с помощью функции raise.
                   Сигналя помеченные (#) не могут генерироваться
                   асинхронно процессорами 8088 или 8086, однако мо-
                   гут генерироваться некоторыми другими процессора-
                   ми (смотри signal).

Возвращаемое       При успешном завершении raise возвращает 0, в про-
значение           тивном случае ненулевое значение.

Переносимость      raise поддерживается системами UNIX и  стандартом
                   ANSI C.

Смотрите также      abort signal

Пример:

#include
int main()
{
int a,b;

a = 10;
b = 0;
if(b==0)

/* предварить ошибку при делении на 0 */
   raise(SIGFPE);
a = a / b;
return 0;


cpp

rand
Функция            Генератор случайных чисел.

Синтаксис          #include
                   int rand(void);

Файл, содержащий   stdlib.h
прототип

Описание           Функция rand использует мультипликативный конгру-
                   энтный генератор случайных чисел с периодом 2^32,
                   чтобы получать псевдослучайные числа в диапазоне
                   от 0 до RAND_MAX. Символическая константа
                   RAND_MAX определена в stdlib.h; ее значение
                   2^15ё1.

Переносимость      Функция поддерживаются на системах UNIX и стандар-
                   том ANSI C.

Смотрите также      random randomise srand

Пример:

#include
#include
int main(void)
{
   int i;
   printf("10 случайных чисел от 0 до 99 \n\n");
   for (i=0; i<10; i++)
       printf("%d\n", rand()%100);
return 0;


cpp

randbrd
Функция            Чтение с диска.

Синтаксис          #include
                   int randbrd(struct fcb *fcbptr, int recent);

Файл, содержащий   dos.h
прототип

Описание           Функция randbrd считывает количество записей
                   recent, используя блок FCB, адресуемый указателем
                   fcbptr. Записи считываются в память по текущему
                   адресу DTA. Записи считываются с диска, причем
                   информация берется из поля random record блока
                   FCB. Эта операция выполняется с помощью системно-
                   го вызова DOS 0x27.

                   Действительное число считанных записей можно оп-
                   ределить проанализировав поля random record блока
                   FCB. Данное поле после операции будет заполнено
                   информацией о числе действительно считанных запи-
                   сей.

Возвращаемое       В зависимости от результата работы функций randbrd
значение           возвращает следующие значения:

                   0- все записи прочитаны;

                   1- достигнут конец файла (EOF) и последняя запись
                      прочитана полностью;

                   2- считанные записи будут располагаться рядом с
                      адресом 0xFFFF (прочитано записей столько,
                      сколько возможно).

                   3- достигунт конец файла и последняя запись обра-
                      ботана не полностью.

Переносимость      Функция уникальна для DOS.

Смотрите также      getdta randbwd setdta

Пример:

#include
#include
#include
#include

int main(void)
{
   char far *save_dta;
   char line[80],buffer[256];
   struct fcb blk;
   int i,result;
   /* ввести имя файла */
   printf("Введите устройство и имя файла (без маршрута, например\
           a:file.dat)\n");
   gets(line);
   /* записать имя файла в FCB */
   if(!parsfnm(line,&blk,1))
   {
      printf("Ошибка при вызове parsfnm\n");
      exit(1);
   }
   printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name);
   /* открыть файл, с использованием функций DOS, работающих с FCB */
   bdosptr(0x0f,&blk,0);
   /* сохранить старый DTA, создать новый */
   save_dta = getdta();
   setdta(buffer);
   /* передать в FCB информацию об DTA */
   blk.fcb_recsize = 128;
   blk.fcb_random = 0L;
   result = randbrd(&blk,1);
   /* проверить результат операции */
   if(!result)
      printf("Чтение закончено успешно\n");
   else
   {
     perror("Ошибка, во время чтения \n");
     exit(1);
   }
   /* считать данные из новой DTA */
   printf("Первые 128 символов:\n);
   for(i=0; i<128; i++)
      putchar(buffer[i]);
   /* восстановить DTA */
   setdta(save_dta);
   return 0;


cpp

randbwr
Функция            Запись на диск.

Синтаксис          #include
                   int randbwr(struct fcb *fcbptr, int reccnt);

Файл, содержащий   dos.h
прототип

Описание           Функция randbwd записывает recent записей, исполь-
                   зуя блок FCB, адресуемый указателем fcbptr. Эта
                   операция выполняется с помощью системного вызова
                   DOS 0x28.

                   Действительное число записанных записей можно оп-
                   ределить проанализировав поля random record блока
                   FCB. Данное поле после операции будет заполнено
                   информацией о числе действительно записанных за-
                   писей.

Возвращаемое       В зависимости от результата работы функций randbwd
значение           возвращает следующие значения:

                   0- все записи записаны;
                   1- На диске нет места для записи данных. (Не за-
                      писано ни одной записи.)
                   2- выводимые записи располагаются рядом с адресом
                      0xFFFF (выведено записей столько, сколько воз-
                      можно).

Переносимость      Функция уникальна для DOS.

Смотрите также      randbrd

Пример:

#include
#include
#include
#include

int main(void)
{
   char far *save_dta;
   char line[80];
   char buffer[256] = "RANDBWR test!";
   struct fcb blk;
   int result;
   /* ввести имя файла */
   printf("Введите имя нового файла (без маршрута, например\
           a:file.dat)\n");
   gets(line);
   /* записать имя файла в FCB */
   if(!parsfnm(line,&blk,1))
   printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name);
   /* создать файл, с использованием функций DOS, работающих с FCB */
   if(bdosptr(0x16,&blk,0)==-1)
   {
      printf("Ошибка при создании файла\n");
      exit(1);
   }
   /* сохранить старый DTA, создать новый */
   save_dta = getdta();
   setdta(buffer);
   /* вывод в файл */
   blk.fcb_recsize = 256;
   blk.fcb_random = 0L;
   result = randbwd(&blk,1);
   /* проверить результат операции */
   if(!result)
      printf("Запись закончена успешно\n");
   else
   {
     perror("Ошибка диска\n");
     exit(1);
   }
   /* закрыть файл */
   if(bdosptr(0x10,&blk,0)==-1)
   {
      printf("Ошибка при закрытии файла\n");
      exit(1);
   }
   /* восстановить DTA */
   setdta(save_dta);
   return 0;


cpp

random
Функция            Генератор случайных чисел.

Синтаксис          #include
                   int random(int num);

Файл, содержащий   stdlib.h
прототип

Описание           Функция random возвращает случайное число в
                   диапазоне от 0 до num-1. random(num) это макро,
                   определенное в виде (rand()%num). И num и возвра-
                   щаемое значение целые.

Возвращаемое       random возвращает случайное число в диапазоне от
значение           0 до num-1.

Переносимость      Соответствующая функция существует в Turbo Pascal.

Смотрите также      rand randomise srand

Пример:

#include
#include
#include

int main(void)
{
   randomize();
   printf("Случайное число в диапазоне от 0 до 99:", random(100));
   return 0;


cpp

randomize
Функция            Инициализация генератора случайных чисел.

Синтаксис          #include
                   #include
                   void randomize(void);

Файл, содержащий   stdlib.h
прототип

Описание           Функция randomize инициализирует генератор случай-
                   ных чисел некоторым случайным числом. Т.к.
                   randomize это макро, которое использует вызов
                   функции time, то мы рекомендуем включить также
                   файл time.h при использовании этой функции.

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

Переносимость      Соответствующая функция существует в Turbo Pascal.

Смотрите также      rand random srand

Пример:

#include
#include
int main(void)
{
   int i;
   randomize();
   printf("10 случайных чисел от 0 до 99 \n\n");
   for (i=0; i<10; i++)
       printf("%d\n", rand()%100);
return 0;


cpp

read
Функция            Считывает данные из файла.

Синтаксис          #include
                   int read(int handle, void *buf, unsigned len);

Файл, содержащий   io.h
прототип

Описание           Функция read делает попытку считать len байт из
                   файла, связанного с handle, в буфер, адресуемый
                   параметром buf.

                   В файле, открытом в текстовом режиме, функция
                   read удаляет символы "возврат каретки" и выдает
                   "конец файла" (EOF), при получении символа
                   Ctrl-Z.

                   Параметр handle - это тот же самый параметр, что
                   получают на выходе функций creat, open, dup,
                   dup2.

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

                   Максимально, read может ввести 65534 байта, т.к.
                   65535 это -1, индикатор ошибки.

Возвращаемое       При успешном завершении возвращается положительное
значение           целое число, являющееся числом байт, помещенных
                   в буфер; причем, если файл открывается в тексто-
                   вом режиме, функция read не включает символы
                   "возврата каретки" и символы Ctrl-z в число счи-
                   танных байтов. По концу файла (EOF), функция воз-
                   вращает нуль.

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

                   EACCES - Отказ доступа;
                   EBADF  - Неверный номер файла.

Переносимость      Функция read поддерживается на системах UNIX.

Смотрите также      _read open write

Пример:

#include
#include
#include
#include
#include
#include

int main(buffer)
{
   void *buf;
   int handle,bytes;
   buf = malloc(10);
   /* Поиск в текущей директории файла с именем TEST.$$$ и
      попытка чтения из него 10 байт. Перед запуском этой
      программы необходимо создать файл TEST.$$$ */
   if((handle = open("TEST.$$$",O_RDONLY|O_BINARY))== -1)
   {
      printf("Ошибка при открытии файла.\n");
      exit(1);
   }
   if((bytes = read(handle,buf,10))==-1)
   {
      printf("Ошибка чтения.\n");
      exit(1);
   }
   printf("Считано %d байт.\n",bytes);
   return 0;


cpp

real
Функция            Возвращает вещественную часть комплексного числа,
                   или преобразует число из двоично-десятичного ко-
                   дирования обратно в float, double или long
                   double.

Синтаксис          Определенное в complex:     Определенное в bcd:
                   #include         #include
                   double real(complex x);     double real(bcd x);

Файл, содержащий   complex.h                   bcd.h
прототип

Описание           Комплексное число состоит из мнимой и веществен-
                   ной части. real возвращает вещественную часть.

                   Кроме этого, вы можете использовать real для пре-
                   образования числа в двоично-десятичном кодирова-
                   нии в число типа float, double или long double.

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

Переносимость      Комплексные функции требуют C++ и поэтому непере-
                   носимы.

Смотрите также      bcd complex imag

Пример 1:

#include
#include

int main(void)
{
   double x=3.1,y=4.2;
   complex z = complex(x,y);
   cout << "z = " << z << "\n";
   cout << "Действительная часть = " << real(z) << "\n";
   cout << "Мнимая часть = " << imag(z) << "\n";
   cout << "Комплексно сопряженное = " << conj(z) << "\n";
   return 0;
}

Пример 2:

#include
#include

int main(void)
{
   bcd x = 3.1;
   cout << "Двоично десятичное число x =" << x << "\n";
   cout << "Его двоичный эквивиалент: " << real(x) << "\n";
   return 0;


cpp

realloc
Функция            Перераспределяет память.

Синтаксис          #include
                   void * realloc(void *block, size_t size);

Файл, содержащий   stdlib.h и alloc.h
прототип

Описание           realloc пытается сжать или увеличить предваритель-
                   выделенный блок до размера в size байт. Аргумент
                   block указывает на блок памяти, полученный при
                   вызове функций malloc, calloc или realloc. Если
                   block является нулевым указателем, realloc рабо-
                   тает также как и malloc.

                   realloc изменяет размер выделенного блока памяти
                   и при необходимости копирует его содержимое в но-
                   вый блок.

Возвращаемое       realloc возвращает адрес блока, который может от-
значение           личаться от исходного. Если блок не может быть
                   выделен или size равно 0, то realloc возвращает
                   NULL.

Переносимость      realloc доступна в системах UNIX и поддерживается
                   стандартом ANSI C.

Смотрите также      calloc farrealloc free malloc

Пример:

#include
#include
#include

int main(void)
{
   char *str;
   /* выделить память под строку */
   str = malloc(10);
   /* скопировать в строку "Hello" */
   strcpy(str,"Hello");
   /* вывести строку */
   printf("Строка: %s\n, Адрес: %p\n",str,str);
   str = realloc(str,20);
   printf("Строка: %s\n, Новый адрес: %p\n",str,str);
   /* освободить память */
   free(str);
   return 0;


cpp

rectangle
Функция            Рисует прямоугольник.

Синтаксис          #include
                   void far rectangle( int left, int top,
                                      int right, int bottom );

Файл, содержащий   graphics.h
прототип

Описание           rectangle рисует прямоугольник линией те-
                   кущего вида, толщины и цвета.

                   (left, top)-координаты левого верхнего угла пря-
                   моугольника, а (right, bottom)-его правый нижний
                   угол.

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

Переносимость      Эта функция уникальна для Turbo C++. Она работа-
                   ет только на компьютерах IBM PC и совместимых с
                   ними, оснащенных дисплейными адаптерами, поддер-
                   живающими графический режим.

Смотрите также      bar bard setcolor setlinestyle

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int left,top,right,bottom;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
left = getmaxx() / 2 - 50;
top = getmaxy() / 2 - 50;
right = getmaxx() / 2 + 50;
bottom = getmaxy() / 2 + 50;
/* рисует прямоугольник */
rectangle(left,top,right,bottom);
/* очистка */
getch();
closegraph();
return 0;


cpp

registerbgidriver
Функция            Регистрирует загруженный пользователем или
                   встроенный код графического драйвера в графичес-
                   кой системе.

Синтаксис          #include
                   int registerbgidriver(void (*driver)(void));

Файл, содержащий   graphics.h
прототип

Описание           registerbgidriver позволяет пользователю
                   загрузить файл драйвера и "зарегистрировать"
                   драйвер. Когда его расположение в памяти будет
                   сообщено registerbgidriver, initgraph сможет ис-
                   пользовать зарегистрированный драйвер. Драйвер,
                   зарегистрированный пользователем, может быть заг-
                   ружен с диска в динамическую область памяти, либо
                   преобразован в .OBJ-файл (с помощью BINOBJ.EXE)
                   и подключен к .EXE .

                   Вызов registerbgidriver информирует графическую
                   систему о том, что драйвер driver был включен во
                   время компоновки. Эта программа проверяет связан-
                   ный код для указанного драйвера. Если код пра-
                   вильный, то она регистрирует код во встроенной
                   таблице. Связанные драйверы описываются подробно
                   в файле UTIL.DOC.

                   Используя имя встроенного драйвера в вызове
                   registerbgidriver, вы просите компилятор (и ре-
                   дактор связей (linker)) встроить объектный файл с
                   общим именем.

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

                   Если вы регистрируете драйвер загруженный пользо-
                   вателем, вы обязаны передать результат выполнения
                   registerbgidriver в initgraph в виде номера драй-
                   вера, который будет использоваться.

Переносимость      Эта функция уникальна для Turbo C++. Она работа-
                   ет только на компьютерах IBM PC и совместимых с
                   ними, оснащенных дисплейными адаптерами, поддер-
                   живающими графический режим.

Смотрите также      graphresult initgrsph installuserdriver
                    registerbgifont
Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;

/* зарегистрировать драйвер, добавленный в graphics.lib */
errorcode = registerbgidriver(EGAVGA_driver);
if(errorcode < 0)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* нарисовать линию */
line(0,0,getmaxx(),getmaxy());

/* очистка */
getch();
closegraph();
return 0;
}

cpp

registerbgifont
Функция            Регистрирует встроенный код штриховых символов.

Синтаксис          #include
                   int registerbgifont(void(*font)(void));

Файл, содержащий   graphics.h
прототип

Описание           Вызов registerbgifont информирует  графи-
                   ческую систему о том, что шрифт font был включен
                   во время компоновки. Эта программа проверяет свя-
                   занный код для указанного шрифта. Если код пра-
                   вильный, то она регистрирует код во встроенной
                   таблице. Встроенные шрифты описываются подробно в
                   разделе BGIOBJ файла UTIL.DOC.

                   Используя имя встроенного шрифта в вызове
                   registerbgifont, вы просите компилятор (и редак-
                   тор связей (linker)) встроить объектный файл с
                   открытым именем.
                   Если вы регистрируете шрифт загруженный пользова-
                   телем, вы обязаны передать результат выполнения
                   registerbgifont в initgraph в виде номера шрифта,
                   который будет использоваться.

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

Переносимость      Эта функция уникальна для Turbo C++. Она работа-
                   ет только на компьютерах IBM PC и совместимых с
                   ними, оснащенных дисплейными адаптерами, поддер-
                   живающими графический режим.

Смотрите также      graphresult initgraph installuserdriver
                    registerbgidriver settextstyle

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int midx,midy;

/* зарегистрировать шрифт, добавленный в graphics.lib */
errorcode = registerbgifont(triplex_font);
if(errorcode < 0)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
/* выбрать шрифт */
settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
/* вывести текст */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(midx,midy, "The TRIPLEX FONT");

/* очистка */
getch();
closegraph();
return 0;


cpp

remove
Функция            Удаляет файл.

Синтаксис          #include
                   int remove(const char *filename);

Файл, содержащий   stdio.h
прототип

Описание           remove удаляет файл, имя которого определяется па-
                   раметром filename. Это макрокоманда, которая
                   просто транслируется в вызов unlink. Если файл
                   был открыт не забудьте его предварительно зак-
                   рыть.

                   Замечание. Строка с именем файла может включать
                   его полный маршрут.

Возвращаемое       При успешном завершении remove возвращает 0. При
значение           ошибке возвращает -1 и присваивает глобальной пе-
                   ременной errno одно из следующих значений:

                       ENOENT - Такого файла или директории нет;
                       EACCES - Доступ запрещен.

Переносимость     remove доступна в системах UNIX и поддерживается
                  стандартом ANSI C.

Смотрите также      unlink

Пример:
#include

int main(void)
{
   char file[80];
   /* запросить имя удаляемого файла */
   printf("Введите имя удаляемого файла */
   gets(file);
   /* удалить файл */
   if(remove(file)==0)
      printf("Файл %s удален.\n");
   else
      perror("remove");
   return 0;


cpp

rename
Функция            Переименовывает файл.

Синтаксис          #include
                   int rename(const char *oldname,
                                                const char *newname);

Файл, содержащий   stdio.h
прототип

Описание           Функция rename изменяет имя файла с oldname на
                   newname. Если спецификация дисковода включена в
                   имя newname, то она должна быть той же, что и в
                   oldname.

                   Директории в маршруте (path) не обязательно долж-
                   ны быть теми же самыми, поэтому функцию rename
                   можно использовать для пересылки файла из одной
                   директории в другую. Применять шаблоны не разре-
                   шается.

Возвращаемое       При успешном переименовании файла функция rename
значение           возвращает 0. В случае ошибки, возвращается -1, а
                   глобальная переменная errno получает одно из сле-
                   дующих значений:

                   ENDENT - Маршрут или имя файла не найдены;
                   EACCES - Отказ доступа;
                   ENOTSAM- Не то же самое устройство.

Переносимость      rename поддерживается стандартом ANSI C.

Пример:

#include

int main(void)
{
   char oldname[80],newname[80];
   /* запросить имя переименовываемого файла, и новое имя */
   printf("Имя переименовываемого файла:");
   gets(oldname);
   promtf("Новое имя:");
   gets(newname);
   if(rename(oldname,newname)==0)
      printf("Файл переименован с %s в %s\n",oldname,newname);
   else
      perror("rename");
   return 0;


cpp

restorecrtmode
Функция            Восстанавливает видео-режим, к исходному, который
                   был перед вызовом initgraph.

Синтаксис          #include
                   void far restorecrtmode(void);

Файл, содержащий   graphics.h
прототип

Описание           restorecrtmode восстанавливает исходный видео ре-
                   жим, который был определен вызовом initgraph.

                   Эта функция может использоваться совместно с
                   setgraphmode для переключения между текстовым и
                   графическим режимами. Функция textmode не должна
                   использоваться для этих целей;она используется
                   только если экран нужно перевести из одного текс-
                   тового режима в другой текстовый режим.

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

Переносимость      Эта функция уникальна для Turbo C++. Она работа-
                   ет только на компьютерах IBM PC и совместимых с
                   ними, оснащенных дисплейными адаптерами, поддер-
                   живающими графический режим.

Смотрите также      getgraphmode initgraph setgraphmode

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
x = getmaxx()/2;
y = getmaxy()/2;
/* вывести текст */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(midx,midy, "Press any key to exit graphics");
getch();
/* перевести систему в текстовый режим */
restorecrtmode();
printf("Мы теперь в текстовом режиме.\n");
printf("Для возврата в графический режим нажмите любую клавишу.\n");
getch();
/* восстановить графический режим */
setgraphmode(getgraphmode());
/* вывести текст */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(midx,midy, "We're now back in graphics mode");
outtextxy(midx,midy+textheight("W"),"Press any key to halt:");

/* очистка */
getch();
closegraph();
return 0;


cpp

rewind
Функция            Устанавливает указатель в начало потока.

Синтаксис          #include
                   int rewind(FILE *stream);

Файл, содержащий   stdio.h
прототип

Описание           rewind(stream) эквивалентно fseek(stream, 0L,
                   SEEK_SET), за исключением того, что rewind обну-
                   ляет признаки конца файла и ошибки, в то время,
                   как fseek обнуляет только признак конца файла.

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

Переносимость      rewind доступна во всех системах UNIX и поддержи-
                   вается стандартом ANSI C.

Смотрите также      fopen fseek ftell

Пример:

#include
#include

int main(void)
{
   FILE *fp;
   char *fname = "TXXXXXX",*newname,first;
   newname = mktemp(fname);
   fp = fopen(newname,"w+");
   fprintf(fp,"abcdefghijklmnopqrstuvwxyz");
   rewind(fp);
   fscanf(fp,%c,&first);
   printf("Первый символ: %c",first);
   fclose(fp);
   remove(nemname);
   return 0;


cpp

rmdir
Функция            Удаляет директорию.

Синтаксис          #include
                   int rmdir(const char *path);

Файл, содержащий   dir.h
прототип

Описание           rmdir удаляет директорию, маршрут которой указан в
                   path. Директория в path:

                   - должна быть полной;

                   - не должна быть текущей рабочей директорией;

                   - не должна быть корневой директорией.

Возвращаемое       rmdir возвращает 0, если директория была успешно
значение           удалена. При ошибке возвращает -1 и присваивает
                   глобальной переменной errno одно из следующих
                   значений:

                   EACCES - Доступ запрещен;
                   ENOENT - Маршрут или файл не найден.

Смотрите также      chdir getcurdir getcwd mkdir

Пример:

#include
#include
#include
#include

int main(void)
{
   int stat;
   stat = mkdir("DIRNAME");
   if(!stat)
      printf("Директория создана\n");
   else
   {
      printf("Не могу создать директорию\n");
      exit(1);
   }
   getch();
   system("dir /p");
   getch();
   stat = rmdir(DIRNAME);
   if(!stat)
      printf("Директория удалена\n");
   else
   {
      perror("\nНе могу удалить директорию\n");
      exit(1);
   }
   return 0;


cpp

rotr
Функция            Циклический сдвиг вправо целого без знака.

Синтаксис          #include
                   unsigned _rotr(unsigned value, int count);

Файл, содержащий   stdlib.h
прототип

Описание           _rotr производит циклический сдвиг значения value
                   вправо на count разрядов. value рассматривается
                   как целое без знака.

Возвращаемое       _rotr возвращает value сдвинутое циклически на
значение           count разрядов.

Смотрите также      _lrotl _lrotr _rotl

Пример:

#include
#include

int main(void)
{
   unsigned value,result;
   value = 32767;
   result = _rotr(value,1);
   printf("Значение %u сдвинутое на один разряд вправо = %u",
              value,result);
   return 0;


cpp

sbrk
Функция            Изменяет размещение сегмента данных в памяти.

Синтаксис          #include
                   char *sbrk(int incr);

Файл, содержащий   alloc.h
прототип

Описание           Функция sbrk добавляет к завершающему значению
                   incr байт, и соответственно выделяет память. incr
                   может быть и отрицательным, в этом случае объем
                   выделенной памяти уменьшается.

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

Возвращаемое       При успешном завершении sbrk возвращает старое
значение           значение. При ошибке, sbrk возвращает -1 и гло-
                   бальной переменной errno присваивает значение:

                   ENOMEM - Недостаточно памяти.

Переносимость      sbrk доступна в системах UNIX.

Смотрите также      brk

Пример:

#include
#include

int main(void)
{
   printf("Изменение выделенного объема памяти с помощью sbrk\n");
   printf("Перед вызовом sbrk свободны %lu байт.\n",
          (unsigned long)coreleft());
   sbrk(1000);
   printf("После вызова sbrk свободны %lu байт.\n",
          (unsigned long)coreleft());
   return 0;


cpp

scanf
Функция            Выполняет форматированный ввод из потока stdin.

Синтаксис          #include
                   int scanf(const char *format [,adress, ...]);

Файл, содержащий   stdio.h
прототип

Описание           Функция scanf просматривают входные поля, символ
                   за символом, считывая их из потока stdin. Затем
                   каждое поле форматируется в соответствии со спе-
                   цификацией формата, передаваемой scanf аргументом
                   format. После этого она записывает отформатиро-
                   ванный ввод по адресам, задаваемым аргументами,
                   следующими за форматной строкой. Число специфика-
                   ций формата должно соответствовать числу адресов.

                             Строка формата.

                   Строка формата, присутствующая в каждом вызове
                   функций семейства ...scanf, управляет тем, каким
                   образом каждая функция будет считывать, преобра-
                   зовывать и записывать входные поля. Для заданных
                   спецификаций формата должно быть достаточное ко-
                   личество адресных аргументов; если это не соблю-
                   дается, результат может быть непредсказуемым и,
                   вероятно ошибочным. Лишние адресные аргументы
                   (больше, чем требует формат) будут игнорированы.

                   Примечание. scanf часто приводит к непредсказуе-
                   мым результаттам, когда вы отклоняетесь от точно-
                   го шаблона. Вам необходимо помнить, что нужно
                   указать scanf, каким образом синхронизировать ко-
                   нец строки. В результате предпочтительнее на наш
                   взгляд комбинация gets или fgets, за которыми
                  следует sscanf.

                   Строка фомата - это символьная строка, содержащая
                   три типа объектов: незначащие символы, значащие
                   символы и спецификации формата.

                   Незначащие символы - это пусто ( ), знак табуля-
                   ции (\t) и символ перехода на новую строку (\n).
                   Как только функция семейства ...scanf встречает
                   незначащий символ в строке формата, она считыва-
                   ет, но не сохраняет все последующие незначащие
                   символы до тех пор, пока не встретится первый
                   значащий символ.

                   Значащие символы - это все символы ASCII, за иск-
                   лючением знака процента (%). Если функция семейс-
                   тва ...scanf встречает в форматной строке значаю-
                   щий символ, она считывает, но не сохраняет данный
                   символ.

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

                   Хвостовые незначащие символы остаются несчитанны-
                   ми (включая символ перехода на новую строку), ес-
                   ли они не встретились явно в строке формата.

                            Спецификации формата.

                   Спецификации формата функций ... scanf имеют сле-
                   дующую форму:

                      %[*] [ширина] [F/N] [h/l/L]  символ типа

                   Спецификация формата начинается со знака %. После
                   этого знака следует спецификации в определенном
                   порядке:

                   - необязательный символ подавления назначения
                     [*];
                   - необязательный спецификатор ширины [width];
                   - необязательный модификатор размера указателя
                     [F/N];
                   - необязательный модификатор типа аргумента
                     [h/l/L];
                   - символ типа.

                       Необязательные компоненты форматной строки.

                   Далее перечислены основные принципы форматирова-
                   ния и спецификаторы форматной строки:

-----------------T---------------------------------------------------
 Символ или      ¦         Каким образом он управляет форматом.
 спецификатор    ¦
-----------------¦---------------------------------------------------
      *          ¦ подавляет назначение следующего входного поля;
   width         ¦ максимальное число считываемых символов; если
                 ¦ функция ...scanf встречает незначащий или непреоб-
                 ¦ разуемый символ, могут быть прочитаны дополнитель-
                 ¦ ные символы;
      size       ¦ отвергает заданный по умолчанию размер адресного
                 ¦ аргумента
                 ¦ (N - ближний указатель,
                 ¦  F - дальний указатель)
     тип         ¦ отвергает заданный по умолчанию адресный аргумент
   аргумента     ¦ (h - короткое целое,
                 ¦  l - длинное целое, если символ типа указывает
                 ¦      целочисленное преобразование
                 ¦  l - двойной точности, если символ типа указывает
                 ¦      на преобразование чисел с плавающей точкой
                 ¦  L - длинное, двойной точности (допустимо только
                 ¦      при преобразовании чисел с плавающей точкой
-----------------+---------------------------------------------------

                   Символы типов для функций  ...scanf.

                   В следующей таблице перечислены символы типов для
                   функций семейства ...scanf, ожидаемый тип ввода и
                   формат, в котором будет сохранен данный ввод.

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

-------T----------------T--------------------------------------------
Символ ¦ Ожидаемый ввод ¦    Тип аргумента
  типа ¦                ¦
-------+----------------+--------------------------------------------
                           Числовые данные.
-------T----------------T--------------------------------------------
  d    ¦ десятичное     ¦ указатель на целое (int *arg)
       ¦    целое       ¦
  D    ¦ десятичное     ¦ указатель на длинное целое (long *arg)
       ¦    целое       ¦
  o    ¦ восьмеричное   ¦ указатель на целое (int *arg)
       ¦    целое       ¦
  O    ¦ восьмеричное   ¦ указатель на длинное целое (long *arg)
       ¦    целое       ¦
  i    ¦ десятичное,    ¦ указатель на длинное целое (long *arg)
       ¦ восьмеричное   ¦
       ¦ или шестнадца- ¦
       ¦ теричное целое ¦
  u    ¦ десятичное     ¦ указатель на целое без знака (unsigned
       ¦ целое без знака¦ int *arg)
  U    ¦ десятичное     ¦ указатель на длинное целое без знака
       ¦ целое без знака¦ (unsigned long *arg)
  x    ¦ шестнадцатерич-¦ указатель на целое (int *arg)
       ¦ ное целое      ¦
  X    ¦ шестнадцатерич-¦ указатель на длиное целое (long *arg)
       ¦ ное целое      ¦
  e    ¦ число с плаваю-¦ указатель на число с плавающей точкой
       ¦ щей точкой     ¦ (float *arg)
  E    ¦ число с плаваю-¦ указатель на число с плавающей точкой
       ¦ щей точкой     ¦ (float *arg)
  f    ¦ число с плаваю-¦ указатель на число с плавающей точкой
       ¦ щей точкой     ¦ (float *arg)
  g    ¦ число с плаваю-¦ указатель на число с плавающей точкой
       ¦ щей точкой     ¦ (float *arg)
  G    ¦ число с плаваю-¦ указатель на число с плавающей точкой
       ¦ щей точкой     ¦ (float *arg)
-------+----------------+--------------------------------------------
                          Символьные данные.
-------T----------------T--------------------------------------------
  s    ¦ строка символов¦ указатель на массив символов (char arg[ ])
  c    ¦ символ         ¦ указатель на символ (char *arg); если шири-
       ¦                ¦ на поля w задается вместе с символом типа c
       ¦                ¦ (как напр. %5c): указатель на массив из w
       ¦                ¦ символов (char arg[w]);
  %    ¦ символ %       ¦ Никакого преобразования не происходит; сим-
       ¦                ¦ вол % сохраняется.
-------+----------------+--------------------------------------------
                              Указатели.
-------T----------------T--------------------------------------------
  n    ¦ (отсутствует)  ¦ указатель на целое (int *arg)
       ¦                ¦ данный указатель хранит количество считан-
       ¦                ¦ ных символов до %n.
  p    ¦ шестнадцатерич-¦ указатель на данный объект (дальний * или
       ¦ ное число в    ¦ ближний *).
       ¦ форме:         ¦ Преобразования %p предусматривают стандарт-
       ¦ YYYY:ZZZZ      ¦ ный размер указателя, принятый в данной мо-
       ¦ или ZZZZ       ¦ дели памяти.
-------+----------------+--------------------------------------------

                            Входные поля.

                   Входным полем может быть одно из следующих выра-
                   жений:

                   - все символы до (но не включая) следующего по
                     порядку незначающего символа;

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

                   - до n символов, где n - это заданная ширина по-
                     ля.

                                 Соглашения.

                   Далее перечислены некоторые соглашения, принятые
                   для определенных спецификаций формата.

                   преобразование %c

                   Данная спецификация позволяет считывать 1, следу-
                   ющий по порядку символ, включая и незначащие.
                   Чтобы пропустить один незначащий и прочесть сле-
                   дующий значащий символ, используйте %1s.

                   Преобразование %Wc (W - спецификация ширины).

                   Адресный аргумент является указателем на массив
                   символов; массив состоит из W элементов (char
                   arg[W]).

                   Преобразование %s

                   Адресный аргумент является указателем на массив
                   символов (char arg[]).

                   Размер массива должен быть по крайней мере (n+1)
                   байтов, где n = длина строки s (в символах).
                   Входное поле оканчивается пробелом или символом
                   перехода на новую строку. К символьной строке ав-
                   томатически добавляется нулевое окончание и запи-
                   сывается, как последний элемент массива.

                   Преобразование %[search set]

                   Набор символов, заключенный в квадратные скобки,
                   может быть заменен на символ типа s. Адресный ар-
                   гумент является указателем на массив символов
                   (char arg[]). В квадратные скобки заключен набор
                   символов, который определяет "искомый набор" воз-
                   можных символов, формирующих строку (входное по-
                   ле).

                   Если первый символ в скобках - это символ (^),
                   искомый набор инвертируется таким образом, чтобы
                   содержать все символы ASCII кроме тех, что пере-
                   числены между квадратными скобками. (Обычно, сим-
                   вол будет включен в инвертированный искомый на-
                   бор, если он не указан явно в списке символов
                   после первого знака).

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

                   %[abcd] будет производиться поиск во входном поле
                            любых из символов a, b, c, d.

                   %[^abcd] будет производиться поиск во входном
                            поле любых символов, кроме a, b, c, d.

                   Здесь вы можете также указать диапазон (чисел или
                   символов). Это короткая запись. К примеру для по-
                   иска десятичной цифры во входном потоке можно
                   указать:
                    %[0123456789]
                   или тоже самое, но короче:
                    %[0-9]
                   Для поиска символов вы можете использовать следу-
                   ющие сокращения:

                    %[A-Z]            Все символы верхнего регистра
                    %[0-9A-Za-z]      Все десятичные цифры и все сим-
                                      волы (и верхнего и нижнего ре-
                                      гистра).
                    %[A-FT-Z]         Все символы верзхнего регистра
                                      с A по F и c T по Z

                   В такой сокращенной записи необходимо придержи-
                   ваться следующих правил:

                   - Символ предшествующий тире (-) должен быть лек-
                     сически меньше символа, находящегося правее ти-
                     ре;

                   - Символ тире не должен быть ни первым, ни пос-
                     ледним в наборе символов. Если он первый или
                     последний, то он рассматривается просто как
                     символ, а не как указатель диапазона.

                   - Символы являющиеся краями диапазона (т.е. слева
                     и справо от тире) не должны входить в другой
                     диапазон.

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

                    %[-+*/]           Четыре арифметических операции
                    %[z-a]            Символы z, - и a.
                    %[+0-9-A-Z]       Символы + и - и диапазон от
                                      0 до 9 и от A до Z
                    %[+0-9A-Z-]       Также символы + и - и диапазон
                                      от 0 до 9 и от A до Z
                    %[^-0-9+A-Z]      Все символы, исключая + и - и
                                      символы в диапазоне от 0 до 9 и
                                      от A до Z

                   преобразования %e, %E, %f, %g, %G (с плавающей
                   точкой.

                   Числа с плавающей точкой во входном поле должны
                   соответствовать следующему формату:

                   [+/-]ddddddddd [.]dddd [E|e] [+/-]ddd,

                   где заключение знаков в квадратные скобки означа-
                   ет их необязательность, а ddd- представляет деся-
                   тичные, восьмеричные и шестнадцатеричные цифры.

                   Кроме этого +INF, -INF, +NAN, -NAN распознаются
                   как числа сплавающей точкойю При этом знак должен
                   присутсвовоать обязательно (INF - бесконечность,
                   NAN - не число).
                   преобразования %d,%i,%o,%x,%D,%I,%O,%X,%c,%h.

                   В любом преобразовании, в котором разрешены ука-
                   затели на символ, целое, длинное целое, могут
                   быть использованы указатели на символ без знака,
                   целое без знака, длинное целое без знака.

                   Символ подавления присвоения.

                   Символом подавления назначения является звездочка
                   (*); Не путайте его символом адресации в языке СИ
                   (также звездочка).

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

                   Спецификаторы ширины.

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

                   Если входное поле содержит менее n символов, фун-
                   кции семейства ...scanf прочтут все символы дан-
                   ного поля, затем перейдут к следующему полю и со-
                   ответствующей ему спецификации формата.

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

                   Неконвертируемым символом считается такой символ,
                   который не может быть преобразован в соответствии
                   с данной спецификацией формата (например, символы
                   8 или 9 при восмеричном формате, или символы J
                   или K при шестнадцатеричном или десятичном форма-
                   те).
--------------T------------------------------------------------------
 Спецификатор ¦   Как спецификатор ширины влияет на сохраняемый
  ширины      ¦   ввод.
--------------+------------------------------------------------------
     n        ¦ До n  символов будет считано, преобразовано и запи-
              ¦ сано в текущий адресный аргумент.
--------------+------------------------------------------------------

                   Модификаторы размера ввода и типа аргумента.

                   Модификаторы размера ввода (N и F) и типа аргу-
                   мента (h,l и L) оказывают влияние на то, каким
                   образом функции ...scanf интерпретируют соответс-
                   твующие адресные аргументы arg.

                   Модификаторы F и N отвергают заданные стандартно
                   или объявленные размеры аргумента arg.

                   Модификаторы h, l и L обозначают, какой тип пре-
                   образования будет использоваться для следующих за
                   ними входных данных (h- короткое целое, l- длин-
                   ное целое, L - длинное двойной точности). Входные
                   данные будут преобразованы в заданный тип, и ар-
                   гумент arg для входных данных будет адресовать
                   объект соответствующего размера ("короткий" объ-
                   ект для %h и длинный или двойной точности объект
                   для %l или %L).
-------------T-------------------------------------------------------
 Модификатор ¦     Как он влияет на преобразование
-------------+-------------------------------------------------------
     F       ¦ Отвергает заданный по умолчанию или объявленный раз-
             ¦ мер;
             ¦ arg интерпретируется, как дальний указатель.
     N       ¦ Отвергает заданный по умолчанию или объявленный раз-
             ¦ мер;
             ¦ arg интерпретируется, как ближний указатель.
             ¦ В сверхбольшой моделе не может использоваться ни с
             ¦ какими преобразованиями.
     h       ¦ Для типов d,i,o,u,x: конвертирует ввод в короткое це-
             ¦ лое, записывает в "короткий" объект.
             ¦ Для типов D,I,O,C,X: не оказывает влияния.
             ¦ Для типов e,f,c,s,n,p: не оказывает влияния.
     l       ¦ Для типов d,i,o,u,x: преобразует ввод в длинное целое,
             ¦ записывает в "длинный" объект.
             ¦ Для типов e,f: преобразует ввод в число двойной точ-
             ¦ ности, записывает в объект двойной точности.
             ¦ Для типов D,I,O,U,X: не оказывает влияния.
             ¦ Для типов c,s,n,p: не оказывает влияния.
     L       ¦ Для типов e, f, g: преобразует введенные данные в
             ¦ длинное двойной точности, и сохраняет их в объекте с
             ¦ тем же типом. На остальные форматы влияния не оказы-
             ¦ вает.
-------------+-------------------------------------------------------

                   Когда функции ...scanf прекращают считывание.

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

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

                   -Символ подавления присвоения (*) появляется в
                    спецификации формата после знака процента %; те-
                    кущее поле считывается, но не запоминается.

                   -Считано width символов (width - спецификатор ши-
                    рины, положительное десятичное целое).

                   -Следующий считанный символ не может быть конвер-
                    тирован при действующем формате (например, сим-
                    вол A, если формат-десятичный).

                   -Следующий считанный символ входного поля отсутс-
                    твует в "поисковом" наборе (или, наоборот, при-
                    сутствует в инвертированном "поисковом" наборе).

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

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

                   -Следующий по порядку символ входного поля не со-
                    ответствует относящемуся к нему значащему симво-
                    лу в строке формата.

                   -Следующий символ во входном поле - EOF.

                   -Строка формата исчерпана.

                   Если в строке формата появляется последователь-
                   ность символов, не являющаяся частью спецификации
                   формата, она должна совпадать с текушей последо-
                   вательностью символов входного поля; функции
                   ...scanf считывают, но не сохраняют совпадающие
                   символы. Когда встречается конфликтный символ, он
                   остается во входном поле, как бы непрочитанным.

Возвращаемое       Функция scanf возвращают количество успешно прочи-
значение           танных, преобразованных и запомненных входных по-
                   лей; возвращаемое значение не включает в себя
                   прочитанные поля, которые не были сохранены.

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

                   Если не было записано ни одного поля, возвращает-
                   ся значение 0.

Переносимость      scanf поддерживается на системах UNIX и определена
                   в стандарте ANSI C. Определены у Кернигана и Рит-
                   чи.

Смотрите также      atof cscanf fscanf getc printf sscanf
                    vfscanf vsscanf

#include
#include

int main(void)
{
   char label[20];
   char name[20];
   int entries = 0;
   int loop,age;
   double salary;
   struct Entry_struct
   {
      char name[20];
      int age;
      float salary;
   } entry[20];
   /* ввести заглавие, как строку, длиной до 20 символов */
   printf("Введите заглавие для диаграммы: ");
   scanf("%20s",label);
   fflash(stdin); /* сбросить входной поток, в случае ошибки */
   /* ввести число элементов в виде целого */
   printf("Сколько элементов (не > 20): ");
   scanf("%d",&entries);
   fflash(stdin); /* сбросить входной поток, в случае ошибки */
   for(loop = 0; loop < entries; ++loop)
   {
       printf("Элемент %d\n",loop);
       /* ввести имя, только буквы в верхнем или нижнем регистре */
       printf("Имя: ");
       scanf("%[A_Za-z]",entry[loop].name);
       fflash(stdin); /* сбросить входной поток, в случае ошибки */
       /* ввести возраст, как целое число */
       printf("Возраст: ");
       scanf("%d",&entry[loop].age);
       fflash(stdin); /* сбросить входной поток, в случае ошибки */
       /* ввести размер зарплаты как float */
       printf("Зарплата: ");
       scanf("%f",&entry[loop].salary);
       fflash(stdin); /* сбросить входной поток, в случае ошибки */
   }
   /* ввести имя, возраст и зарплату как строку, целое и число с пла-
      вающей точкой, соответственно */
   printf("Пожалуйста, введите свое имя, возраст и зарплату.\n");
   scanf("%20s %d %lf",name,&age,&salary);
   /* напечатать введенные данные */
   printf("\n\AТаблица %s\n",label);
   printf("Вычислена %s, возраст %d, $%15.2lf\n",name,age,salary);
   printf("-----------------------------------------------------\n");
   for(loop = 0; loop


cpp

searchpath
Функция            Просматривает маршрут в поисках файла.

Синтаксис          #include
                   char *searchpath(const char *filename);

Файл, содержащий   dir.h
прототип

Описание           Функция searchpath делает попытку найти файл с
                   именем filename, используя маршрут DOS, определя-
                   емый в переменной окружения PATH. Указатель на
                   полное имя маршрута файла возвращается в качестве
                   значения функции. Сначала просматривается текущая
                   директория рабочего диска. Если файл там не най-
                   ден, вызывается переменная операционной среды
                   PATH и каждая директория в маршруте PATH просмат-
                   ривается до тех пор, пока файл не будет найден
                   или маршрут не будет исчерпан.

                   Как только файл будет найден, возвращается стро-
                   ка, содержащая полное имя маршрута файла. Эта
                   строка затем может быть использована в вызовах
                   функций open или exec... для получения доступа к
                   файлу.

                   Возвращаемая строка с именем файла помещается в
                   static буфер и переписывается при каждом последу-
                   ющем вызове функции searchpath.

Возвращаемое       Если файл успешно найден, возвращается указатель
значение           на строку filename, в противном случае, функция
                   searchpath возвращает значение NULL.

Переносимость      Функция уникальна для DOS.

Смотрите также      exec.., findfirst findnext spawn.., system

Пример:

#include
#include

int main(void)
{
   char *p;
   p = searchpath("TLINK.EXE");
   printf("Маршрут для TLINK.EXE : %s\n", p);
   p = searchpath("NOTEXIST.FIL");
   printf("Маршрут для NOTEXIST.FIL : %s\n", p);
   return 0;
}

Вывод:
Маршрут для TLINK.EXE : C:\BIN\TLINK.EXE
Маршрут для NOTEXIST.FIL : (null)


cpp

sector
Функция            Рисует и закрашивает эллиптические сектора.

Синтаксис          #include
                   void far  sector (int x,int y,int stangle,
                                       int endangle,int xradius,
                                       int yradius);

Файл, содержащий   graphics.h
прототип

Назначение         sector рисует эллиптический сектор с центром
                   в точке с координатами (x,y) и горизонтальными и
                   вертикальными радиусами xradius и yradius соот-
                   ветственно, текущим цветом рисунка. Дуга рисуется
                   от угла stangle до угла endangle. Сектор рисуется
                   текущим цветом и закрашивается цветом и шаблоном,
                   определенными функциями setfillstyle или
                   setfillpattern.

                   Угол для arc отсчитывается против часовой стрел-
                   ки, где 0 градусов соответствует 3 часам на ци-
                   ферблата, 90 градусов - 12 часам и т.д.

                   Если во время заполнения сектора возникает ошиб-
                   ка, graphresult возвращает значение -6
                   (grNoScanMem).

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      arc circle ellipse getarccoords
                    getaspectratio graphresult pieslice
                    setfillpattern setfillstyle
EW1setgraphbufsizeFW0

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int midx,midy,i;
int stangle = 0,endangle = 360;
int xradius = 100,yradius = 50;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* цикл по шаблонам */
for(i=EMPTY_FILL; i


cpp

setactivepage
Функция            Устанавливает активную страницу для графического
                   вывода.

Синтаксис          #include
                   void far setactivepage(int page);

Файл, содержащий   graphics.h
прототип

Описание           setactivepage делает страницу page активной.
                   Весь последующий графический вывод будет направ-
                   ляться на эту страницу.

                   Активной графической страницей может быть та, ко-
                   торую вы видите на экране, хотя это и не обяза-
                   тельно. Это зависит от количества графических
                   страниц в вашей системе. Только графические карты
                   EGA, VGA и Hercules поддерживают несколько стра-
                   ниц.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      setvisualpage

Пример:

#include
#include
#include
#include

int main(void)
{
/* Выбрать драйвер и режим, который он поддерживает */
int graphdriver = EGA, gmode = EGAHI, errorcode;
int x,y,ht;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"\\tc");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
x = getmaxx() / 2;
y = getmaxy() / 2;
ht = textheight("W");
/* выбрать для вывода невидимую в настоящий момент страницу */
setactivepage(1);
/* нарисовать на ней линию */
line(0,0,getmaxx(),getmaxy());
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,"This is page #1");
outtextxy(x,y+ht,"Press any key to halt");
/* выбрать для вывода страницу 0 */
setactivepage(0);
/* вывести текст на страницу 0 */
outtextxy(x,y,"This is page #0");
outtextxy(x,y+ht,"Press any key to view page #1");
getch();
/* сделать страницу 1 видимой */
setvisualpage(1);

/* очистка */
getch();
closegraph();
return 0;


cpp

setallpalette
Функция            Изменяет всю палитру красок.

Синтаксис          #include
                   void far setallpalette(struct palettetype
                   far *palette);

Файл, содержащий   graphics.h
прототип

Описание           setallpalette устанавлмвает текущую политру
                   в значения, заданные в структуре palettetype, на
                   которую указывает параметр palette. Вы можете
                   частично (или полностью) изменить цвета политры
                   EGA/VGA c помощью функции setallpalette.

                   Константа MAXCOLORS и структура palettetype ис-
                   пользуемые в setallpalette, определены в
                   graphics.h следующим образом:

                      #define MAXCOLORS 15

                      struct palettetype{
                         unsigned char size;
                         signed char colors[MAXCOLORS+1];
                      };

                   size содержит количество цветов в палитре для те-
                   кущего графического драйвера в текущем режиме.

                   colors -массив из size байтов, содержащий ряд но-
                   меров цветов для каждого элемента палитры. Если
                   элемент в массиве colors равен -1, то цвет палит-
                   ры для этого элемента не изменяется.

                   Элементы массива colors, используемые в
                   setallpalette, могут быть представлены в виде
                   символических констант, определенных в graphics.h

          -----------------------------------------------------
                    Таблица доступных цветов
          -----------------------------------------------------
                 CGA                         EGA/VGA
          Имя               Знач      Имя               Знач.
          -----------------------------------------------------
          BLACK                0    EGA_BLACK              0
          BLUE                 1    EGA_BLUE               1
          GREEN                2    EGA_GREEN              2
          CYAN                 3    EGA_CYAN               3
          RED                  4    EGA_RED                4
          MAGENTA              5    EGA_MAGENTA            5
          BROWN                6    EGA_LIGHTGRAY          7
          LIGHTGRAY            7    EGA_BROWN             20
          DARKGRAY             8    EGA_DARKGRAY          56
          LIGHTBLUE            9    EGA_LIGHTBLUE         57
          LIGHTGREEN          10    EGA_LIGHTGREEN        58
          LIGHTCYAN           11    EGA_LIGHTCYAN         59
          LIGHTRED            12    EGA_LIGHTRED          60
          LIGHTMAGENTA        13    EGA_LIGHTMAGENTA      61
          YELLOW              14    EGA_YELLOW            62
          WHITE               15    EGA_WHITE             63
          -----------------------------------------------------

                   Заметим, что цвета зависят от текущих графическо-
                   го драйвера и графического режима.

                   Изменения, произведенные в палитре, сразу же мо-
                   гут быть увидены на экране. При изменении цвета в
                   палитре, все на экране, окрашенное в этот цвет,
                   станет окрашенным в новый цвет.

                   Замечание. setallpalette не может использоваться
                   с драйвером IBM-8514.

Возвращаемое       Если в setallpalette передается ошибочное
значение           значение, graphresult возвратит -11(grError)
                   а текущая палитра останется без изменений.

Переносимость       Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

Смотрите также       getpalette getpalettesize graphresult
                     setbkcolor setcolor setpalette

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
struct palettetype pal;
int color,maxcolor,ht;
int y=10;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */

{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxcolor = getmaxcolor();
ht = 2*textheight("W");
/* получить копию палитры */
getpalette(&pal);
/* вывести значения цветов палитры */
for(color = 1; color <= maxcolor; color++)
{
   setcolor(color);
   sprintf(msg,"Color %d",color);
   outtextxy(1,y,msg);
   y += ht;
}
/* ожидать нажатия клавиши */
getch();
/* присвоить всем у[цветам значение черного */
for(color = 1; color <= maxcolor; color++)
{
   setpalette(color,BLACK);
   getch();
}
/* восстановить цвета палитры */
setallpalette(&pal);
/* очистка */
getch();
closegraph();
return 0;


cpp

setaspectratio
Функция            Изменяет корректитующий фактор  характеристичес-
                   кого отношения, установленного по умолчанию.

Синтаксис          #include
                   void far setaspectratio(int xasp,int yasp);

Файл, содержащий   graphics.h
прототип

Описание           setaspectratio испльзуется для изменения,
                   установленного по умолчанию характеристического
                   отношения графической системы. Характеристическое
                   отношение используется графической системой для
                   того, чтобы убедиться, что окружность рисуется
                   круглой. Если окружность на экране выглядит эл-
                   липсом, монитор плохо настроен. Это может быть
                   исправлено в аппаратном обеспечении посредством
                   перенастройки монитора, или это может быть сдела-
                   но в пограммном обеспечении, используя
                   setaspectratio для установки характеристического
                   отношения. Для получения текущего характеристи-
                   ческого отношения для системы вызывается
                   getaspectratio.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      circle getaspectratio

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int xasp,yasp,midx,midy;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());

/* получить текущее характеристическое отношение */
getaspectratio(&xasp,&yasp);

/* нарисовать нормальную окружность */
circle(midx,midy,100);
getch();

/* нарисовать окружность, вытянутую в ширину */
cleardevice();
setaspectratio(xasp/2,yasp);
circle(midx,midy,100);
getch();

/* нарисовать окружность, вытянутую в длину */
cleardevice();
setaspectratio(xasp,yasp/2);
circle(midx,midy,100);
getch();

/* очистка */
getch();
closegraph();
return 0;


cpp

setbkcolor
Функция            Устанавливает текущий цвет фона, используя
                   палитру.

Синтаксис          #include
                   void far setbcolor(int color);

Файл, содержащий   graphics.h
прототип

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

          -----------------------------------------------------
           номер         имя            номер         имя
          -----------------------------------------------------
             0           BLACK                8     DARKGRAY
             1           BLUE                 9     LIGHTBLUE
             2           GREEN                10    LIGHTGREEN
             3           CYAN                 11    LIGHTCYAN
             4           RED                  12    LIGHTRED
             5           MAGENTA              13    LIGHTMAGENT
             6           BROWN                14    YELLOW
             7           LIGHTGRAY            15    WHITE
          -----------------------------------------------------

          Замечание. Эти символические имена определены в graphics.h

                   Например, если вы хотите установить цвет фона в
                   синий, вы можете вызвать

                         setbkcolor(BLUE)
                         /* или */
                         setbkcolor(1)

                   На системах с CGA и EGA setbkcolor изменяет цвет
                   фона изменением первого элемента палитры.

                   Замечание. Если вы используете VGA или EGA и ме-
                   няте цвета палитры с помощью setpalette или
                   setallpalette, то предопределенные символические
                   константы могут не дать требуемого цвета. Это
                   происходит потому, что параметр для setbkcolor
                   отображает номер элемента в текущей палитре, а не
                   указанный цвет (если параметр не равен 0, т.к. он
                   всегда устанавливает цвет фона в черный).

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      getbcolor setallpalette setcolor setpalette

Пример:

#include
#include
#include
#include

int main(void)
{
/* Выбрать драйвер и режим, поддерживающие несколько цветов фона */
int graphdriver = EGA, gmode = EGAHI, errorcode;
int bkcolor,x,y,maxcolor;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();

if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* максимальный поддерживаемый индекс цвета */
maxcolor = getmaxcolor();
/* установить центрирование текста */
settextjustify(CENTER_TEXT,CENTER_TEXT);
x = getmaxx() / 2;
y = getmaxy() / 2;
/* цикл по допустимым цветам */
for(bkcol=0;bkcol<=maxcolor();bkcol++)
{
   /* очистить экран */
   cleardevice();
   setbkcolor(bkcol);
   /* вывести сообщение */
   if(bkkol == WHITE)
      setcolor(EGA_BLUE);
   sprintf(msg,"Background color: %d",bkcol);
   outtext(x,y,msg);
   getch();
}
/* очистка */
getch();
closegraph();
return 0;


cpp

setblock
Функция            Модифицирует размер ранее выделенного сегмента
                   памяти.

Синтаксис          #include
                   int setblock(unsigned segx, unsigned newsize);

Файл, содержащий   dos.h
прототип

Описание           setblock изменяет размер сегмента памяти. segx -
                   адрес сегмента, который был получен при вызове
                   функции allocmem. newsize - это новый необходимый
                   размер сегмента в параграфах.

Возвращаемое       setblock возвращает -1 при успешном завершении.
значение           При возникновении ошибки она возвращает размер
                   в параграфах самого большого блока и устанавлива-
                   ет соответствующее значение в переменной
                   _doserrno.

Переносимость      setblock уникальна для DOS.

Смотрите также      allocmem freemem

Пример:

#include
#include
#include
#include

int main(void)
{
   unsigned int size,segp;
   int stat;
   size = 64; /* выделить 1024 байта (16 * 64) */
   stat = allocmem(size,&segp);
   if(stat == -1)
      printf("Память выделена в сегменте %X\n",segp);
   else
   {
      printf("Ошибка. Максимальный размер блока: %d\n",stat);
      exit(1);
   }
   stat = setblock(segp,size*2);
   if(stat == -1)
      printf("Расширенный блок в сегменте %X\n",segp);
   else
      printf("Ошибка. Максимальный размер блока: %d\n",stat);
   freemem(segp);
   return 0;


cpp

setbuf
Функция            Назначает буфер для потока stream.

Синтаксис          #include
                   void setbuf(FILE *stream, char *buf);

Файл, содержащий   stdio.h
прототип

Описание           Функция setbuf выделяет буфер buf для использова-
                   ния в операциях ввода/вывода - вместо автомати-
                   чески выделяемого буфера. Он будет использоваться
                   только после того, как данный поток stream будет
                   открыт.

                   При использовании функции setbuf, если параметр
                   buf = NULL, ввод/вывод производится без буфера; в
                   противном случае буфер используется.

                   Буфер должен быть длиной BUFSIZE байтов (данная
                   константа определяется в файле stdio.h).

                   Стандартный ввод и вывод stdin и stdout не ис-
                   пользуют буферов, если они не были переназначены;
                   в противном случае, ввод и вывод производиться с
                   буферизацией.

                   unbuffered (небуферизованный ввод/вывод) означа-
                   ет, что символы, записываемые в поток, поступают
                   непосредственно в файл или на устройство; в то
                   время как buffered (буферизованный ввод/вывод)
                   означает, что символы накапливаются и затем запи-
                   сываются, как блок.

                   Функция setbuf может привести к непредвиденным
                   результатам, если она вызывается для потока
                   stream, причем не следует немедленно за операцией
                   открытия или вызовом функции fseek. Вызов функции
                   setbuf после того, как поток stream обработан без
                   буферов, разрешен, и не вызовет ошибок.

                   Наиболее распространенной причиной ошибки являет-
                   ся размещение буфера, в качестве automatiс (ло-
                   кальной) переменной и затем попытка закрыть файл
                   до выхода из функции, в которой был объявлен бу-
                   фер.

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

Переносимость      Функция поддерживаются на системах UNIX и стан-
                   дартом ANSI C.

Смотрите также      fflush fopen fseek setvbuf

Пример:

#include

/* BUFSIZE определено в stdio.h */
char buf[BUFSIZE];

int main(void)
{
   int i;
   /* подключить буфер к стандартному потоку */
   setbuf(stdout,buf);
   /* поместить в буфер символы */
   puts("Это тест буферизованного вывода.\n");
   puts("Этот вывод осуществляется в buf\n");
   puts("и вы ничего не увидите, пока буффер не заполнится\n");
   puts("или вы не сбросите его.\n");
   /* сбросить поток */
   fflush(stdout);
   return 0;


cpp

setcbrk
Функция            Устанавливает control-break.

Синтаксис          #include
                   int setcbrk(int value);

Файл, содержащий   dos.h
прототип

Описание           setcbrk использует функцию DOS 0х33 для установки
                   флага Ctrl_Break.

                   value = 0 Выключает реакцию на Ctrl_Break (вклю-
                             чена только во время операций ввода/вы-
                             вода на консоль, принтер или коммуника-
                             ционный порт.)

                   value = 1 Включает реакцию на Ctrl_Break. (При
                             любых системных вызовах).

Возвращаемое       setcbrk возвращает value, т.е. переданное
значение           значение.

Переносимость      setcbrk уникальна для DOS.

Смотрите также      getcbrk

Пример:

#include
#include
#include

int main(void)
{
   int break_flag;
   printf("Для выключения нажмите 0\n");
   printf("Для включения нажмите 1\n");
   break_flag = getch()-'0';  /* прим. пер. в оригинале без вычит. */
   setcbrk(break_flag);
   if(getcbrk())
      printf("Флаг Ctrl-Break включен\n");
   else
      printf("Флаг Ctrl-Break выключен\n");
   return 0;


cpp

setcolor
Функция            Устанавливает текущий цвет рисования, используя
                   палитру.

Синтаксис          #include
                   void far setcolor(int color);

Файл, содержащий   graphics.h
прототип

Описание           setcolor изменяет текущий цвет рисования, ко-
                   торый может изменяться от 0 до getmaxcolor.

                   Текуший цвет рисования - это значение которое
                   присваивается пикселям при рисовании линий и т.п.
                   Следующие таблицы содержат цвета, используемые в
                   CGA и EGA соответственно.
    -----------------------------------------------------------
    Номер    Константа присвоенная номеру цвета(значение пиксел
    палитры          1               2               3
    -----------------------------------------------------------
         0     CGA_LIGHTGREEN   CGA_LIGHTRED       CGA_YELLOW
         1     CGA_LIGHTCYAN    CGA_LIGHTMAGENTA   CGA_WHITE
         2     CGA_GREEN        CGA_RED            CGA_BROWN
         3     CGA_CYAN         CGA_MAGENTA        CGA_LIGHTGRA
    -----------------------------------------------------------
                           ---------------------------------
                           Числовое        Символическое
                           значение         имя
                           ---------------------------------
                               0           BLACK
                               1           BLUE
                               2           GREEN
                               3           CYAN
                               4           RED
                               5           MAGENTA
                               6           BROWN
                               7           LIGHTGRAY
                               8           DARKGRAY
                               9           LIGHTBLUE
                              10           LIGHTGREEN
                              11           LIGHTCYAN
                              12           LIGHTRED
                              13           LIGHTMAGENTA
                              14           YELLOW
                              15           WHITE
                           -----------------------------------
                   Вы выбираете цвет рисования, посылая либо сам но-
                   мер цвета, либо соответствующее символическое имя
                   в setcolor. Например, в режиме CGAC0 палитра сос-
                   тоит из четырех цветов: цвет фона, яркозеленый,
                   яркокрасный и желтый. В этом режиме либо вызовом
                         setcolor(3)
                   либо
                         setcolor(CGA_YELLOW)
                   выбирается желтый цвет рисунка.

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

Переносимость       Эта функция пригодна только для компьюте-
                    ров IBM PC и совместимых с ними, оснащенных дис-
                    плейными адаптерами, поддерживающими графический
                    режим.

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      getcolor getmaxcolor graphresult
                    setallpalette setbkcolor setpalette

Пример:

#include
#include
#include
#include

int main(void)
{
/* Выбрать драйвер и режим, поддерживающие несколько цветов */
int graphdriver = EGA, gmode = EGAHI, errorcode;
int color,x,y,maxcolor;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* максимальный поддерживаемый индекс цвета */
maxcolor = getmaxcolor();
/* установить центрирование текста */
settextjustify(CENTER_TEXT,CENTER_TEXT);
x = getmaxx() / 2;
y = getmaxy() / 2;
/* цикл по допустимым цветам */
for(color=0;color<=maxcolor();color++)
{
   /* очистить экран */
   cleardevice();
   setcolor(color);
   /* вывести сообщение */
   sprintf(msg,"Color: %d",color);
   outtext(x,y,msg);
   getch();
}
/* очистка */
getch();
closegraph();
return 0;


cpp

setdate
Функция            Устанавливает дату DOS.

Синтаксис          #include
                   void setdate(struct date *datep);

Файл, содержащий   dos.h
прототип

Описание           setdate устанавливает системную дату (месяц, день,
                   год) в структуре data, на которую указывает
                   datep.

                   Структура date определена следующим образом:

                   struct date {
                      int da_year;             /* год */
                      char da_day;             /* день месяца */
                      char da_mon;             /* месяц (1 = Янв.) */
                   };

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

Переносимость      setdate уникальна для DOS.

Смотрите также      getdate gettime settime

Пример:

#include
#include
#include

int main(void)
{
   struct date reset;
   reset.da_year = 2001;
   reset.da_mon  = 1;
   reset.da_day  = 1;
   setdate(&reset);
   system("date");
   return 0;


cpp

setdisk
Функция            Устанавливает спецификацию текущего дисковода.

Синтаксис          #include
                   int setdisk(int drive);

Файл, содержащий   dir.h
прототип

Описание           setdisk устанавливает текущим дисковод, определяе-
                   мый параметром drive (0 - A, 1 - B, 2 - C и т.
                   д.). Эквивалентно вызову функции DOS 0х0Е.

Возвращаемое       setdisk возвращает общее число доступных дисково-
значение           дов.

Переносимость      setdisk уникальна для DOS.

Смотрите также      getdisk

Пример:

#include
#include

int main(void)
{
   int maxdrives;
   maxdrives = setdisk(2);
   printf("Доступно %d логических устройств\n",maxdrives);
   return 0;


cpp

setdta
Функция            Устанавливает адрес DTA. (Область связи с диском).

Синтаксис          #include
                   void setdta(char far *dta);

Файл, содержащий   dos.h
прототип

Описание           setdta изменяет текущий адрес области связи с дис-
                   ком (DTA) по значению параметра dta.

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

Переносимость      setdta уникальна для DOS.

Смотрите также      getdta

Пример:

#include
#include
#include
#include

int main(void)
{
   char far *save_dta;
   char line[80];
   char buffer[256] = "SETDTA test!";
   struct fcb blk;
   int result;
   /* ввести имя файла */
   printf("Введите имя нового файла (без маршрута, например\
           a:file.dat)\n");
   gets(line);
   /* записать имя файла в FCB */
   if(!parsfnm(line,&blk,1))
   printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name);
   /* создать файл, с использованием функций DOS, работающих с FCB */
   if(bdosptr(0x16,&blk,0)==-1)
   {
      printf("Ошибка при создании файла\n");
      exit(1);
   }
   /* сохранить старый DTA, создать новый */
   save_dta = getdta();
   setdta(buffer);
   /* вывод в файл */
   blk.fcb_recsize = 256;
   blk.fcb_random = 0L;
   result = randbwd(&blk,1);
   /* проверить результат операции */
   printf("result = %d",result);
   if(!result)
      printf("Запись закончена успешно\n");
   else
   {
     perror("Ошибка диска\n");
     exit(1);
   }
   /* закрыть файл */
   if(bdosptr(0x10,&blk,0)==-1)
   {
      printf("Ошибка при закрытии файла\n");
      exit(1);
   }
   /* восстановить DTA */
   setdta(save_dta);
   return 0;


cpp

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

Синтаксис          #include
                   void far setfillpattern(char far *upattern,
                                            int color);

Файл, содержащий   graphics.h
прототип

Описание           setfillpattern аналогична функции setfill-
                   style, за исключением того, что вы используете ее
                   для установки определенного пользователем шаблона
                   8 x 8 вместо встроенных шаблонов.

                   upattern - указатель на последовательность из 8
                   байт, где каждый байт соответствует 8-ми пикселям
                   шаблона. Каждый бит шаблонного байта установлен-
                   ный в 1, вызывает отображение соответствующего
                   пиксела на экране.

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

Смотрите также      getfillpattern getfillsettings
                    graphresult sector setfillstyle

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int maxx,maxy;
char pattern[8] = {0x00,0x70,0x20,0x27,0x24,0x24,0x07,0x00);

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxx = getmaxx();
maxy = getmaxy();
setcolor(getmaxcolor());
/* выбрать пользовательский шаблон */
setfillpattern(pattern,getmaxcolor());
/* заполнить экран с помощью этого шаблона */
bar (0,0,maxx,maxy);
/* очистка */
getch();
closegraph();
return 0;


cpp

setfillstyle
Функция            Устанавливает шаблон и цвет заполнения.

Синтаксис          #include
                   void far setfillstyle(int pattern,int color);

Файл, содержащий   graphics.h
прототип

Описание           setfillstyle устанавливает текущие цвет и
                   шаблон заполнения. Для установки шаблона, опреде-
                   ленного пользователем не устанавливайте pattern
                   равным 12 (USER_FILL) в setfillfile, а лучше ис-
                   пользуйте функцию setfillpattern.

                   Перечисляемый тип fill_patterns, определенный в
                   graphics.h, задает имена встроенных шаблонов за-
                   полнения и индикатор для шаблона, определяемого
                   пользователем.
--------------------------------------------------------------
  имя             значение            описание
--------------------------------------------------------------
  EMPTY_FILL          0        заполнеие цветом фона
  SOLD_FILL           1        сплошное заполнение цветом
                               заполнения
  LINE_FILL           2        заполнение ______
  LSTLASH_FILL        3        заполнение //////
  SLASH_FILL          4        заполнение /// толстой линией
  BKSLASH_FILL        5        заполнение \\\ толстой линией
  LTBKSLASH_FILL      6        заполнение \\\\
  HATCH_FILL          7        светлая штриховка сеткой
  XHATCH_FILL         8        крестообразная штриховка
  INTERLEAVE_FILL     9        тканеобразная штриховка
  WIDE_DOT_FILL       10       заполнение редкими точками
  CLOSE_DOT_FILL      11       заполнение частыми точками
  USER_FILL           12       шаблон заполнения, определяемый
                               пользователем
--------------------------------------------------------------
                   Все, кроме EMPTY_FILL заполняют текущим цветом;
                   EMPTY_FILL использует текущий цвет фона.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      bar bard fillpoly floodfill
                    getfillsettings graphresult pieslice
                    sector setfillpattern

Пример:

#include
#include
#include
#include
#include

/* имена поддерживаемых типов заполнения */
char *fname[] = {"EMPTY_FILL",
                 "SOLID_FILL",
                 "LINE_FILL",
                 "LSTLASH_FILL",
                 "SLASH_FILL",
                 "BKSLASH_FILL",
                 "LTBKSLASH_FILL",
                 "HATCH_FILL",
                 "XHATCH_FILL",
                 "INTERLEAVE_FILL",
                 "WIDE_DOT_FILL",
                 "CLOSE_DOT_FILL",
                 "USER_FILL"
                };

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
struct fillsettingstype fillinfo;
int maxx,maxy,style;
char stylestr[40];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
for(style=EMPTY_FILL;style


cpp

setftime
Функция            Устанавливает дату и время создания файла.

Синтаксис          #include
                   int setftime(int handle, struct ftime *ftimep);

Файл, содержащий   io.h
прототип

Описание           setftime устанавливает время и дату файла, свя-
                   занного с открытым дескриптором handle, в соот-
                   ветствии с содержимым структуры ftime.

                   Структура ftime определена следующим образом:

                   struct ftime {
                      unsigned ft_tsec:5;            /* по две сек.*/
                      unsigned ft_min:6;             /* минуты */
                      unsigned ft_hour:5;            /* часы */
                      unsigned ft_day:5;             /* день */
                      unsigned ft_month:4;           /* месяц */
                      unsigned ft_year:7;            /* год-1980 */
                   };

Возвращаемое       При успешном завершении setftime возвращает 0.
значение           Если произошла ошибка, она возвращает -1 и гло-
                   бальной переменной errno присваивает одно из сле-
                   дующих значений:

                     EINVFNC - Неверный номер функции;
                     EBADF   - Неверный номер файла.

Переносимость      setftime уникальна для DOS.

Смотрите также      getftime

Пример:

#include
#include
#include
#include

int main(void)
{
   struct ftime filet;
   FILE *fp;
   if((fp=fopen("TEST.$$$","w")) == NULL)
   {
      perror("Ошибка:");
      exit(1);
   }
   fprintf(fp,"Тестирование...\n");
   filet.ft_tsec = 1;
   filet.ft_min = 1;
   filet.ft_hour = 1;
   filet.ft_day = 1;
   filet.ft_month = 1;
   filet.ft_year = 21;
   system("dir TEST.$$$");
   setftime(fileno(fp),&filet);
   system("dir TEST.$$$");
   fclose(fp);
   unlink("TEST.$$$");
   return 0;


cpp

setgraphbufsize
Функция            Изменяет размер внутреннего графического буфера.

Синтаксис          #include
                   unsigned far setgraphbufsize(unsigned bufsize);

Файл, содержащий   graphics.h
прототип

Описание           Некоторые графические функции (такие как
                   floodfill) используют буфер памяти, который выде-
                   ляется при вызове initgraph и отменяется при вы-
                   зове closegraph. По умолчанию размер этого, выде-
                   ляемого с помощью _graphgetmem, буфера равен 4096
                   байт.

                   Вы можете сделать этот буфер меньше (для сбереже-
                   ния памяти) или больше (если, например, при обра-
                   щении к floodfill возвращается ошибка -7:Out of
                   flood memory).

                   setgraphbufsize сообщает initgraph сколько памяти
                   выделить для этого встроенного графического буфе-
                   ра, когда она обращается к _graphgetmem.

                   Замечание. Вы должны вызывать setgraphbufsize до
                   вызова initgraph. Если же initgraph вызван, то
                   все обращения к setgraphbufsize будут игнориро-
                   ваться до вызова closegraph.

Возвращаемое       setgraphbufsize возвращает предыдущий раз-
значение           мер встроенного буфера.

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      closegraph _graphfreemem _graphgetmem
                    initgraph sector

Пример:

#include
#include
#include
#include

#define BUFSIZE 1000 /* размер внутреннего буфера */

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y,oldsize;
char msg[80];
oldsize = setgraphbufsize(BUFSIZE);
/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
x = getmaxx()/2;
y = getmaxy()/2;
/* вывести информацию */
sprintf(msg,"Размер графического буфера: %d",BUFSIZE);
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,msg);
sprintf(msg,"Старый размер графического буфера: %d",oldsize);
outtextxy(x,y+textheigth("W"),msg);
/* очистка */
getch();
closegraph();
return 0;
}

cpp

setgraphmode
Функция            Переводит систему в графический режим, очищает
                   экран.

Синтаксис          #include
                   void far setgraphmode(int mode);

Файл, содержащий   graphics.h
прототип

Описание           setgraphmode выбирает графический режим
                   отличный от установленного по умолчанию функцией
                   initgraph. mode должен быть режимом, допустимым
                   для используемого драйвера. setgraphmode очищает
                   экран и устанавливает все графические величины в
                   значение по умолчанию (CP, палитра, цвет, окно и
                   т.д.).

                   Вы можете использовать setgraphmode совместно с
                   restorecrtmode для переключения между графическим
                   и текстовым режимами.

Возвращаемое       Если вы задаете setgraphmode несуществующий
значение           для используемого драйвера режим, то graph-
                   result вернет значение -10 (grInvalidMode).

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      getgraphmode getmoderange graphresult
                    initgraph restorecrtmode

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
x = getmaxx()/2;
y = getmaxy()/2;
/* вывести сообщение */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,"Press any key to exit graphics...");
getch();
/* перевести систему в текстовый режим */
restorecrtmode();
printf("Мы в текстовом режиме\n");
printf("Для возврата в графический режим нажмите клавишу.\n");
getch();
/* возврат в графический режим */
setgraphmode(getgraphmode());

/* вывести сообщение */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,"We're back in graphics mode...");
outtextxy(x,y+textheight("W"),"Press any key to halt...");

/* очистка */
getch();
closegraph();
return 0;


cpp

setjmp
Функция            Устанавливает нелокальный переход.

Синтаксис          #include
                   int setjmp(jmp_buf jmpb);

Файл, содержащий   setjmp.h
прототип

Описание           setjmp захватывает состояние задачи в jmpb и воз-
                   вращает 0.

                   Последующий вызов longjmp восстанавливает состоя-
                   ние задачи из jmpb и возвращается также как и
                   setjmp со значением val.

                   Cостояние задачи представляет собой следующее:

                   - все сегментные регистры (CX,DS,ES,SS);
                   - переменные-регистры (SI,DI);
                   - указатель стека (SP);
                   - указатель базы (BP);
                   - флаги.

                   Состояние задачи является достаточно полным, так
                   что функции setjmp и longjmp могут быть использо-
                   ваны как инструмент для организации сопрограмм.

                   Перед использованием функции longjmp необходимо
                   вызвать функцию setjmp. Программа вызывающая
                   setjmp и устанавливающая jmpb должна оставаться
                   активной и не должна возвращать управления до вы-
                   зова longjmp. Если это случится, то результат
                   непредсказуем.

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

                   Примечание. Функции setjmp и longjmp нельзя ис-
                   пользовать для реализации оверлейных программ.
                   Обычно setjmp и longjmp сохраняют и восстананав-
                   ливают все, необходимые для реализации сопрог-
                   рамм, однако для управления оверлеями необходимо
                   следить за стеком, причем подразумевается, что
                   стек один. При реализации сопрограмм вы обычно
                   используете два стека, или две части одного сте-
                   ка, и поэтому администратор оверлеев не сможет
                   корректно их отслеживать.

                   Вы можете иметь задачи, работающие в фоновом ре-
                   жиме, которые используют свой стек, или свой раз-
                   дел общего стека, однако вы должны быть уверены,
                   что они не используют оверлеев, и вы не должны
                   использовать оверлейные версии setjmp и longjmp
                   для переключения на эти фоновые задачи.

Возвращаемое       setjmp возвращает 0 при начальном вызове.
значение           Если это вызов для возврата после longjmp, setjmp
                   возвращает ненулевое значение (как в примере).

Переносимость      Функция поддерживаются на системах UNIX и стандар-
                   том ANSI C.

Смотрите также      longjmp signal

Пример:

#include
#include
#include

void subroutine(void);

imp_buf jumper;

int main()
{
   int value;
   value = setjmp(jumper);
   if (value != 0) {
     printf("longjmp со значением %d\n", value);
     exit(value);
   }
   printf("Вызов подпрограммы ... \n");
   subroutine();
   return 0;
}
void subroutine(void)
{
   longjmp(jumper,l);


cpp

setlinestyle
Функция            Устанавливает толщину и тип линии.

Синтаксис          #include
                   void far setlinestyle(int linestyle,
                              unsigned upattern, int thickness);

Файл, содержащий   graphics.h
прототип

Описание           Устанавливает тип для всех линий, рисуемых
                   функциями line, lineto, rectangle, drawpoly и
                   т.д.

                   Структура linesettingstype определена в
                   graphics.h следующим образом:

                       struct linesettingstype{
                          int linestyle;
                          unsigned upattern;
                          int thickness;
                       };

                   linestyle определяет тип линий, который будет ис-
                   пользоваться (непрерывная, пунктир, штрихпунктир,
                   штриховая). Перечисленные line_styles, определен-
                   ные в graphics.h, дают названия этим операциям:
                   -------------------------------------------
                    Название      Знач.       Описание
                   -------------------------------------------
                   SOLID_LINE        0     сплошная
                   DOTTED_LINE       1     пунктир
                   CENTER_LINE       2     штрихпунктир
                   DASHED_LINE       3     штриховая
                   USERBIT_LINE      4     тип линии, заданный
                                           пользователем
                   -------------------------------------------
                   thickness определяет будут ли последующие линии
                   тонкими или толстыми.
                   -------------------------------------------
                    Название      Знач.       Описание
                   -------------------------------------------
                   NORM_WIDTH        1     толшина в 1 пиксел
                   THICK_WIDTH       3     толщина в 3 пиксела
                   -------------------------------------------

                   upattern -это 16-битный шаблон, который использу-
                   ется только когда linestyle равен USERBIT_LINE
                   (4). В этом случае, каждый бит в шаблоне установ-
                   ленный в 1, соответствует пикселю на линии в те-
                   кущем цвете. Например, сплошной линии соответстс-
                   вует upattern равный 0xFFFF (рисуются все пиксе-
                   лы), а пунктиру соответствует upattern равный
                   0x3333 или 0x0F0F. Если же параметр linestyle в
                   setlynestyle не равен USERBIT_LINE (!=4), то
                   upattern поддерживается, но игнорируется.

                   Замечание. Параметр linestyle не работает при
                   построении дуг, кругов, эллипсов и секторов. В
                   этом случае используется пареметр thickness.

Возвращаемое       Если в setlinestyle передается неправиль-
значение           ный ввод, graphresult возвратит -11, а теку-
                   щий тип линии останется без изменений.

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      arc bard circle drawpoly ellipse
                    getlinesettings graphresult line linerel                    lineto pieslice rectangle

Пример:

#include
#include
#include
#include

/* имена поддерживаемых типов линий */
char lname[] = {"SOLID_LINE",
                "DOTTED_LINE",
                "CENTER_LINE",
                "DASHED_LINE",
                "USERBIT_LINE"
                };

int main(void)
{
/* Запрос автоопределения */

int graphdriver = DETECT, gmode, errorcode;
int midx,midy,style,userpat;
char stylestr[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
/* пользовательский шаблон: 1 (двоичный:0000000000000001) */
userpat = 1;
for(style = SOLID_STYLE; style <= USERBIT_STYLE; style++)
{
   /* установить тип линии */
   setlinestyle(style,userpat,1)
   /* пребразовать в строку */
   strcpy(stylestr,lname[style]);
   /* нарисовать линию */
   line(0,0,midx-10,midy);
   /* нарисовать прямоугольник */
   rectangle(0,0,getmaxx(),getmaxy());
   /* вывести сообщение */
   outtextxy(midx,midy,stylestr);
   /* ожидать нажатия клавиши */
   getch();
   cleardevice();
}
/* очистка */
closegraph();
return 0;


cpp

setlocale
Функция            Выбирает locale.

Синтаксис          #include
                   char *setlocale(int category,char *locale);

Файл, содержащий   locale.h
прототип

Описание           Turbo C++ в настоящее время поддерживает только
                   "С" locale, поэтому вызов этой функции не будет
                   иметь ни какого смысла.

                   Аргумент category может принимать следующие зна-
                   чения:

                   LC_ALL
                   LC_COLLATE
                   LC_CTYPE
                   LC_MONETARY
                   LC_NUMERIC
                   LC_TIME

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

Переносимость      setlocale поддерживается стандартом ANSI C.

Смотрите также      localeconv

Пример:

#include
#include

int main(void)
{
   char *old_locale;
   /* в Turbo C++ поддерживается только "C" */
   old_locale = setlocale(LC_ALL,"C");
   printf("Old locale was %s\n",old_locale);
   return 0;


cpp

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

Синтаксис          #include
                   void setmem(void *dest, unsigned len, char value);

Файл, содержащий   mem.h
прототип

Описание           setmem присваивает всем байтам блока памяти с ад-
                   ресом dest и длиной len значение value.

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

Переносимость      setmem уникальна для микропроцессоров семейства
                   8086.

Смотрите также      memset strset

Пример:

#include
#include
#include

int main(void)
{
   char *dest;
   dest = calloc(21,sizeof(char));
   setmem(dest,20,'c');
   printf("%s\n",dest);
   return 0;


cpp

setmode
Функция            Устанавливает режим открытия файла.

Синтаксис          #include
                   int setmode(int handle, unsigned amode);

Файл, содержащий   io.h
прототип

Описание           Функция setmode устанавливает режим открытия файла
                   (либо бинарный, либо текстовый), соответствующего
                   параметру handle. Аргумент amode принимает при
                   этом значение либо O_BINARY, либо O_TEXT, но ни-
                   когда вместе. (Эти символические константы опре-
                   делены в файле fcntl.h)

Возвращаемое       При успешном завершении функция setmode
значение           значение 0;
                   в случае ошибки - значение -1, кроме того, гло-
                   бальная переменная errno получает значение:

                      EINVAL - Неверный аргумент.

Переносимость      Функция setmode поддерживается на системах UNIX.

Смотрите также      _creat creat _open open

Пример:

#include
#include
#include

int main(void)
{
   int result;
   result = setmode(fileno(stdprn),O_TEXT);
   if(result == -1)
      printf("Режим не допустим\n");
   else
      printf("Режим установлен.\n");
   return 0;


cpp

setpalette
Функция            Изменяет один цвет в палитре.

Синтаксис          #include
                   void far setpalette(int colornum, int color);

Файл, содержащий   graphics.h
прототип

Описание           setpalette устанавливает элемент colornum
                   в color. Например, setpalette(0,5) изменяет пер-
                   вый цвет текущей палитры (цвет фона) на цвет,
                   имеющий код 5. Если size -это количество элемен-
                   тов в текущей палитре, то colornum может изме-
                   няться от 0 до (size -1).

                   Вы можете частично (либо целиком) поменять цвета
                   в EGA/VGA палитре с помощью setpalette. На CGA же
                   вы можете изменить лишь первый элемент палитры
                   (colornum равен 0, цвет фона).

                   Элементы массива colors, используемые в
                   setpalette, могут быть представлены ввиде симво-
                   лических констант, определенных в graphics.h

          -----------------------------------------------------
                    Таблица доступных цветов
          -----------------------------------------------------
                 CGA                         EGA/VGA
          Имя               Знач      Имя               Знач.
          -----------------------------------------------------
          BLACK                0    EGA_BLACK              0
          BLUE                 1    EGA_BLUE               1
          GREEN                2    EGA_GREEN              2
          CYAN                 3    EGA_CYAN               3
          RED                  4    EGA_RED                4
          MAGENTA              5    EGA_MAGENTA            5
          BROWN                6    EGA_LIGHTGRAY          7
          LIGHTGRAY            7    EGA_BROWN             20
          DARKGRAY             8    EGA_DARKGRAY          56
          LIGHTBLUE            9    EGA_LIGHTBLUE         57
          LIGHTGREEN          10    EGA_LIGHTGREEN        58
          LIGHTCYAN           11    EGA_LIGHTCYAN         59
          LIGHTRED            12    EGA_LIGHTRED          60
          LIGHTMAGENTA        13    EGA_LIGHTMAGENTA      61
          YELLOW              14    EGA_YELLOW            62
          WHITE               15    EGA_WHITE             63
          -----------------------------------------------------

                   Заметим, что цвета зависят от текущих графическо-
                   го драйвера и графического режима.

                   Изменения, произведенные в палитре, сразу же от-
                   ражаются на экране. При изменении цвета в палит-
                   ре, все на экране, окрашенное в этот цвет, станет
                   окрашенным в новый цвет.

                   Замечание. setpalette не может использоваться с
                   драйвером IBM-8514.

Возвращаемое       Если в setpalette передается ошибочное
значение           значение, graphresult возвратит -11(grError)
                   а текущая палитра останется без изменений.

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      getpalette graphresult setbkcolor setcolor
                    setrrgbpalette

Пример:

#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int color,maxcolor,ht;
int y=10;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxcolor = getmaxcolor();
ht = 2*textheight("W");
/* вывести цвета по умолчанию */
for(color=0;color


cpp

setrgbpalette
Функция            Позволяет пользователю определять цвета для
                   IBM 8514.

Синтаксис          #include
                   void far setgbpalette(int colornum,int red,
                                          int green, int blue);

Файл, содержащий   graphics.h
прототип

Описание           setgbpalette может использоваться с драйверами
                   IBM8514 и VGA.

                   colornum определяет элемент палитры, который дол-
                   жен быть загружен, а red, green и blue определяют
                   цветовые составляющие элемента палитры.

                   Для дисплея IBM8514 (и VGA в цветном режиме 256К)
                   colornum изменяется в интервале от 0 до 255. Для
                   остальных режимов VGA colornum изменяется в ин-
                   тервале от 0 до 15. Используется только младшие
                   байты red, green и blue, и из байта лишь 6 наибо-
                   лее значащих бит загружаются в палитру.

                   Замечание. Для совместимости с другими графичес-
                   кими адаптерами IBM, драйвер BGI устанавливает
                   первые 16 элементов палитры IBM8514 в цвета
                   EGA/VGA, используемые по умолчанию. Эти значения
                   могут использоваться без изменений, а могут изме-
                   няться с помощью setrgbpalette.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      setpalette

Пример:

#include
#include
#include
#include

int main(void)
{
/* выбор драйвера и режима, поддерживающих функцию setrgbpalette */
int graphdriver = VGA, gmode = VGAHI, errorcode;
/* указатель на структуру описания политры */
struct palettetype pal;
int i,ht,y,xmax;

/* инициализация графики и локальных переменных */

initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* получить копию палитры */
getpalette(&pal);
for(i=0;i


cpp

settextjustify
Функция            Устанавливает выравнивание текста для графических
                   функций.

Синтаксис          #include
                   void far settextjustify(int horiz,int vert);

Файл, содержащий   graphics.h
прототип

Описание           Выводимый текст, после обращения к settext-
                   justify будет выравнен горизантально или верти-
                   кально относительно текущей позиции (СР). По
                   умолчанию устанавливается выравнивание текста
                   LEFT_TEXT (для горизонтального) и TOP_TEXT (для
                   вертикального). Перечисленные в graphics.h
                   text_just представляют собой имена для установки
                   horiz и vert для передачи в settextjustify.

                   -------------------------------------------
                    Название      Знач.       Описание
                   -------------------------------------------
                    LEFT_TEXT        0      horiz
                    CENTER_TEXT      1      horiz и vert
                    RIGHT_TEXT       2      horiz
                    BOTTOM_TEXT      0      vert
                    TOP_TEXT         2      vert
                   -------------------------------------------

                   Если horiz равно LEFT_TEXT и direction равно
                   HORIZ_DIR, то элемент x CP продвигается с помощью
                   textwidth(string) после вызова outtext(string).

                   settextjustify работает с текстами написанными
                   функцией outtext и не может быть использована в
                   текстовом режиме и с потокоориентированными функ-
                   циями.

Возвращаемое       Если в settextjustify передается неправильный
значение           ввод, то graphresult возвратит -11, а теку-
                   щее выравнивание текста останется без изменений.

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      gettextsettings graphresult outtext
                    settextstyle

Пример:

#include
#include
#include
#include

/* прототип функции */
void xat(int x,int y);

/* горизонтальное выравнивание текста */
char *hjust[] = {"LEFT_TEXT",
                 "CENTER_TEXT",
                 "RIGTH_TEXT"};

/* вертикальное выравнивание текста */
char *vjust[] = {"BOTTOM_TEXT",
                 "CENTER_TEXT",
                 "TOP_TEXT"};

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int midx,midy,hj,vj;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
/* цикл по выравниваниям */
for(hj=LEFT_TEXT;hj


cpp

settextstyle
Функция            Устанавливает текущие характеристики текста для
                   графического вывода.

Синтаксис          #include
                   void far settextstyle(int font,int direction,
                                          int charsize);

Файл, содержащий   graphics.h
прототип

Описание           settextstyle устанавливает шрифт текста,
                   направление отображения текста и размер символов.
                   Вызов settextstyle действует для любых текстов,
                   выводимых с помощью outtext и outtextxy.

                   Параметры font, direction и charsize, передавае-
                   мые в settextstyle, описаны следующим образом:

                   font: допустимы: один шрифт с матрицей 8х8 бит и
                   несколько "стилизованных" шрифтов. По умолчанию
                   используется шрифт с матрицей 8х8 битов. Перечис-
                   ленные font_names, определенные в graphics.h, оп-
                   ределяют названия различных шрифтов( смотри таб-
                   лицу):
                   -------------------------------------------
                     Имя           Знач.    Описание
                   -------------------------------------------
                   DEFAULT_FONT       0     шрифт 8х8 бит
                   TRIPLEX_FONT       1     утроенный шрифт
                   SMALL_FONT         2     малый шрифт
                   SANSSERIF_FONT     3     шрифт sans-serif
                   GOTHIC_FONT        4     готический шрифт
                   -------------------------------------------

                   Битовый шрифт, используемый по умолчанию, встроен
                   в графическую систему. Стилизованные шрифты хра-
                   няться в дисковых файлах *.CHR и по одному могут
                   храниться в памяти. Поэтому при выборе шрифта,
                   отличного от загруженного в систему, необходимо
                   загрузить соответствующий *.CHR-файл с диска. Для
                   избежания этих загрузок при использовании нес-
                   кольких шрифтов вы можете поместить шрифтовые
                   файлы в вашу программу при компановки. Это осу-
                   ществляется путем преобразования их в объектные
                   файлы с помощью утилиты BGIOBJ и регистрации их
                   через register- bgifont, как описано в файле
                   UTIL.DOC, поставляемом вместе с Turbo C++.
                   direction: поддерживается два направления - гори-
                   зонтальный текст( слева направо) и вертикальный
                   текст (повернут на 90 градусов против часовой
                   стрелки). По умолчанию наравление равно
                   HORIZ_DIR.
                   -------------------------------------------
                     Имя           Знач.    Описание
                   -------------------------------------------
                     HORIZ_DIR        0      слева направо
                     VERT_DIR         1      снизу вверх
                   -------------------------------------------
                   charsize: размер каждого символа может быть уве-
                   личен фактором charsize. Значение charsize равное
                   0 используется только со стилизованными шрифтами,
                   а ненулевое значение charsize можно использовать
                   и с основным битовым шрифтом.

                   1) Если charsize равен 1, outtext и
                      outtextxy будут отображать шрифтовую матрицу
                      8х8 бит в прямоугольник 8х8 пикселов на экра-
                      не.

                   2) Если charsize равен 2, эта функция отоб-
                      разит матрицу 8х8 бит в прямоугольник 16х16
                      пикселов на экране, и т.д.( до ограничения в
                      10 раз больше от нормального размера).

                   3) Когда charsize равен 0, функции вывода
                      outtext и outtextxy увеличивают шрифт текста
                      используя либо фактор увеличения символов(4)
                      по умолчанию, либо размер шрифта определенный
                      пользователем, используя setusercharsize.

                   Используйте также textheight и textwidth для оп-
                   ределения размера шрифта.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      gettextsettings graphresult
                    installuserfont settextjustify setusercharsize
                    textheight textwidth

Пример:

#include
#include
#include
#include

/* имена поддерживаемых шрифтов */
char *font[] = {"DEFAULT_FONT",
                "TRIPLEX_FONT",
                "SMALL_FONT",
                "SANS_SERIF_FONT",
                "GOTHIC_FONT"
                };

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int style,midx,midy;
int size=1;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
settextjustify(CENTER_TEXT,CENTER_TEXT);
/* цикл по шрифтам */
for(style=DEFAULT_FONT;style


cpp

settime
Функция            Устанавливает системное время.

Синтаксис          #include
                   void settime(struct time *timep);

Файл, содержащий   dos.h
прототип

Описание           settime устанавливает системное время в соответст-
                   вии с содержимым структуры time, на которую ука-
                   зывает параметр timep.

                   Структура time определена следующим образом:

                   struct time {
                      unsigned char ti_min;         /* минуты */
                      unsigned char ti_hour;        /* часы */
                      unsigned char ti_hund;        /* сотые доли сек */
                      unsigned char ti_sec;         /* секунды */
                   };

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

Переносимость      settime уникальна для DOS.

Смотрите также      ctime getdate gettime setdate time

Пример:

#include
#include

int main(void)
{
   struct time t;
   gettime(&t);
   printf("минута: %d\n",t.ti_min);
   printf("час: %d\n",t.ti_hour);
   printf("сотые: %d\n",t.ti_hund);
   printf("секунды: %d\n",t.ti_sec);
   /* увеличить счетчик минут */
   t.ti_min++;
   settime(&t);
   return 0;


cpp

setusercharsize
Функция            Позволяет пользователю  изменять ширину и высоту
                   символов для векторных шрифтов.

Синтаксис          #include
                   void far setusercharsize(int multx,int divx,
                                            int multy,int divy);

Файл, содержащий   graphics.h
прототип

Описание           setusercharsize позволяет вам управлять
                   размером текста из векторных шрифтов, используе-
                   мых графическими функциями. Значения установлен-
                   ные функцией setusercharsize являются действи-
                   тельными только если charsize, установленный ра-
                   нее с помощью settextstyle, равен 0.

                   С помощью setusercharsize вы определяете факторы,
                   по которым масштабируются ширина и высота. Ширина
                   и высота, установленные по умолчанию, могут изме-
                   няться в размерах с помощью multx:divx и
                   multy:divy соответственно. Например, если необхо-
                   димо сделать текст в два раза шире и на 50% выше,
                   установите:

                      multx = 2; divx = 1;
                      multy = 3; divy = 2;

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      gettextsettings graphresult settextsyle

Пример:

#include
#include
#include
#include

int main(void)
{

/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* выбрать тип шрифта */
settextstyle(TRIPLEX_FONT,HORIS_DIR,4)
/* переместить CP на начальную позицию */
moveto(0,getmaxy()/2);
/* вывести текст */
outtext("Norm ");
/* сделать его в 1/3 нормальной высоты */
setusercharsize(1,3,1,1);
outtext("Short ");
/* сделать его в 3 раза больше нормальной ширины */
setusercharsize(3,1,1,1);
outtext("Wide ");
/* очистка */
getch();
closegraph();
return 0;


cpp

setvbuf
Функция            Назначает буфер для потока stream.

Синтаксис          #include
                   void setvbuf(FILE *stream, char *buf, int type,
                                                       size_t size);

Файл, содержащий   stdio.h
прототип

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

                   При вызове функции setvbuf, если параметр buf =
                   NULL, буфер будет выделен посредством malloc; па-
                   раметр size будет определять объем выделенной па-
                   мяти. Параметр size определяет размер буфера и
                   должен быть больше нуля.

                   Замечание. Параметр size не должен превышать
                   32767.

                   Стандартный ввод и вывод stdin и stdout не ис-
                   пользуют буферов, если они не были переназначены;
                   в противном случае, ввод и вывод производиться с
                   буферизацией.

                   unbuffered (небуферизованный ввод/вывод) означа-
                   ет, что символы, записываемые в поток, поступают
                   непосредственно в файл или на устройство; в то
                   время как buffered (буферизованный ввод/вывод)
                   означает, что символы накапливаются и затем запи-
                   сываются, как блок.

                   Параметр type имеет одно из следующих значений:

                   _IOFBF Файл использует буферы полностью (fully
                   buffered). Если буфер пуст, следующая операция
                   ввода пытается заполнить буфер. Перед тем, как
                   данные  записываются  в файл, выводной буфер дол-
                   жен полностью заполниться.

                   _IOLBF Файл использует буферы построчно (line
                   buffered). Когда буфер пуст, следующая операция
                   ввода пытается его заполнить. Тем не менее, при
                   выводе буфер будет сброшен, как только в файл бу-
                   дет записан символ перехода на новую строку.

                   _IONBF Файл не использует буферов (unbuffered).
                   Параметры buf и size игнорируются. Каждая операция
                   ввода будет считывать данные непосредственно из
                   файла, и каждая операция вывода будет записывать
                   данные непосредственно в файл.

                   Наиболее распространенной причиной ошибки являет-
                   ся размещение буфера, в качестве automatiс (ло-
                   кальной) переменной и затем попытка закрыть файл
                   до выхода из функции, в которой был объявлен бу-
                   фер.

Возвращаемое       Функция setvbuf при успешном завершении возвращает
значение           0. Не нуль она возвращает, если параметры type или
                   size имеют неверные значения; или если для разме-
                   щения буфера нехватает памяти.

Переносимость      Функция поддерживаются на системах UNIX и стан-
                   дартом ANSI C.

Смотрите также      fflush fopen setbuf

Пример:

#include

int main(void)
{
   FILE *input, *output;
   char bufr[512];
   input = fopen("file.in", "r");
   output = fopen("file.out", "w");
   /* указать минимальный доступ к диску и свой буфер */
   if (setvbuf(input, bufp,_IOLBF, 512) != 0)
       printf("Ошибка, при определении буфера для входного файла\n");
   else
       printf("Буфер определен\n");
   /*  определить для входного файла строчную буферизацию, и неявно
       определить буфер, который будет выделен, с помощью вызова
       функции malloc */
   if (setvbuf(output, NULL,_IOLBF, 132) != 0)
       printf("Ошибка, при определении буфера для выходного файла\n");
   else
       printf("Буфер определен\n");
   /* ввод вывод */
   /* закрыть файлы */
   fclose(input);
   fclose(output);
   return 0;


cpp

setvect
Функция            Устанавливает вектор прерывания.

Синтаксис          void setvect(int intr_num, void interrupt(*isr)
                   ());

Файл, содержащий   dos.h
прототип

Описание           Каждый микропроцессор семейства 8086 включает на-
                   бор векторов прерываний, с номерами от 0 до 255.
                   Четырех байтовые значения каждого вектора в дейс-
                   твительности представляют собой адреса программ
                   обработки соответствующих прерываний.
                   setvect устанавливает новую программу обработки
                   прерывания с номером intr_num, передавая ее адрес
                   в параметре isr. Адрес подпрограммы можно пере-
                   дать только в том случае, если она объявлена как
                   подпрограмма обработки прерывания (interrupt).

                   Примечание. Если вы используете прототипы, объяв-
                   ленные в dos.h то вы можете просто посылать адрес
                   подпрограммы обработки прерывания setvect в любой
                   модели памяти.

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

Переносимсоть      setvect уникальна для микропроцессоров семейства
                   8086.

Смотрите также      getvect

Пример:

/*  Примечание:
    Это программа обработки прерываний. Вы должны компилировать
    данную программу с отключенной функцией проверки переполнения
    стека (Test Steck Overflow - off).  */

#include
#include
#include

#define INTR 0X1C  /* прерывание по таймеру */

void interrupt (*oldfunc)(); /* указатель на прерывание */
int count = 0;

void interrupt handler()
{
   /* увеличить счетчик */
   count ++;
   /* вызвать старый вектор */
   oldfunc();
}

int main(void)
{
   /* сохранить старый вектор */
   oldfunc = getvect(INTR);
   /* установить новый вектор */
   setvect(INTR,handler)
   /* ничего не делать */
   while(count<20)
      printf("счетчик = %d\n",count);
   /* восстановить старый вектор */
   setvect(INTR,oldfunc);
   return 0;


cpp

setverify
Функция            Устанавливает состояние флага проверки DOS.

Синтаксис          #include
                   void setverify(int value);

Файл, содержащий   dos.h
прототип

Описание           setverify устанавливает значение флага проверки в
                   соответствии с параметром value.

                   - value = 0 Флаг проверки сбрасывается;
                   - value = 1 Флаг проверки устанавливается.

                   Флаг проверки определяет, будут ли проверяться
                   операции записи на диск. Если флаг сброшен, то
                   проверка не производится, если установлен, то все
                   операции записи на диск проверяются.

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

Переносимость      setverify уникальна для DOS.

Смотрите также      getverify

Пример:

#include
#include
#include

int main(void)
{
   int verify_flag;
   printf("Для сброса флага нажмите '0'.\n");
   printf("Для установки флага нажмите '1'.\n");
   verify_flag = getch()-'0'; /* в оригинале getch(). прим. пер. */
   setverify();
   if(getverify())
      printf("Флаг установлен. \n");
   else
      printf("Флаг сброшен. \n");
   return 0;


cpp

setviewport
Функция            Устанавливает область просмотра для графического
                   вывода.

Синтаксис          #include
                   void far setviewport(int left, int top,
                                    int right, int bottom,int clip);

Файл, содержащий   graphics.h
прототип

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

                   Углы окна задаются в абсолютных координатах экра-
                   на с помощью (left, top) и (right, buttom). Кур-
                   сор перемещается в позицию (0,0) нового окна.

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

Возвращаемое       Если в setviewport передается неверное значение,
значение           то graphresult возвращает -11, а текущие значения
                   останутся без изменений.

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      clearviewport getviewsettings graphresult

Пример:

#include
#include
#include
#include

#define CLIP_ON 1 /* активизации клиппирования в области просмотра */

int main(void)

{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
setcolor(getmaxcolor(1));
/* сообщение выводится в область просмотра, по умолчанию это весь
   экран */
outtextxy(0,0,"<-- 0,0 область просмотра по умолчанию");
/* создать меньшую область просмотра */
setviewport(50,50,getmaxx()-50,getmaxy()-50,CLIP_ON);
/* вывести сообщение */
outtextxy(0,0,"<-- 0,0  меньшая область просмотра");
/* очистка */
getch();
closegraph();
return 0;


cpp

setvisualpage
Функция            Устанавливает номер видимой страницы графической
                   памяти.

Синтаксис          #include
                   void far setvisualpage(int page);

Файл, содержащий   graphics.h
прототип

Описание           setvisualpage делает page видимой графической
                   страницей.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      graphresult setactivepage

Пример:

#include
#include
#include
#include

int main(void)
{
/* Выбрать драйвер и режим, которые поддерживают несколько страниц */
int graphdriver = EGA, gmode = EGAHI, errorcode;
int x,y,ht;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"\\tc");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
x = getmaxx() / 2;
y = getmaxy() / 2;
ht = textheight("W");
/* выбрать для вывода невидимую в настоящий момент страницу */
setactivepage(1);
/* нарисовать на ней линию */
line(0,0,getmaxx(),getmaxy());
/* вывести сообщение на страницу #1 */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,"This is page #1");
outtextxy(x,y+ht,"Press any key to halt");
/* выбрать для вывода страницу 0 */
setactivepage(0);
/* вывести текст на страницу 0 */
outtextxy(x,y,"This is page #0");
outtextxy(x,y+ht,"Press any key to view page #1");
getch();
/* сделать страницу 1 видимой */
setvisualpage(1);

/* очистка */
getch();
closegraph();
return 0;


cpp

setwritemode
Функция            Устанавливает режим для вывода вграфическом
                   режиме.

Синтаксис          #include
                   void far setwritemode(int mode);

Файл, содержащий   graphics.h
прототип

Описание           Определены следующие константы:

                        COPY_PUT = 0  /* MOV */
                        XOR_PUT  = 1  /* XOR */

                   Каждая константа связана с двоичной операцией,
                   выполняемый над байтом в строке и соответствующим
                   байтом на экране. COPY_PUT использует ассемблер-
                   ную команду MOV для перзаписи строки независимо
                   от того, что на экране. XOR_PUT использует коман-
                   ду XOR для комбинирования содержимого строки и
                   экрана. Две последовательно выполненные команды
                   XOR приведут к уничтожению строки и восстановле-
                   нию первоначального изображения на экране.

                   Замечание. setwritemode работает только с line,
                   linerel, lineto, rectangle и drawpoly.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      drawpoly line linerel lineto putimage

Пример:

#include
#include
#include
#include

int main()
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int xmax,ymax;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
xmax = getmaxx();
ymax = getmaxy();
/* выбрать режим XOR */
setwritemode(XOR_PUT);
/* нарисовать линию */
line(0,0,xmax,ymax);
getch();
/* стереть линию, нарисовав ее же, поверх существующей */
line(0,0,xmax,ymax);
getch();
/* выбрать режим COPY */
setwritemode(COPY_PUT);
/* нарисовать линию */
line(0,0,xmax,ymax);
/* очистка */
getch();
closegraph();
return 0;


cpp

signal
Функция            Определяет действия по обработке сигналов.

Синтаксис          #include
                   void (*signal(int sig, void (*func)
                                 (int sig [, int subcode])))(int);

Файл, содержащий   signal.h
прототип

Описание           signal определяет как реагировать на сигнал, с но-
                   мером sig. Вы можете загрузить свою программу об-
                   работки сигнала или использовать две предопреде-
                   ленные подпрограммы, описанные в signal.h.
                   Это следующие:
                   --------------------------------------------------
                   Номер ф-ции         Значение
                   --------------------------------------------------
                   SIG_DFG             Завершить выполнение программы
                   SIG_IGN             Игнорировать сигнал этого типа
                   SIG_ERR             Определяет ошибку, возвращае-
                                       мую signal
                   --------------------------------------------------
                   Имеются предопределенные типы сигналов:
                   --------------------------------------------------
                   Тип сигнала       Значение
                   --------------------------------------------------
                   SIGABRT           Ненормальное завершение. Действие
                                     по умолчанию эквивалентно
                                     _exit(3).
                   SIGFPE            Арифметическая ошибка, возникаю-
                                     щая при делении на 0, неверной
                                     операции и т.п. Действие по
                                     умолчанию эквивалентно _exit(1).
                   SIGILL            Неверная операция. Действие
                                     по умолчанию эквивалентно
                                     _exit(1).
                   SIGINT            Прерывание по Ctrl-C. Действие
                                     по умолчанию INT 23H.
                   SIGSEGV           Неверное обращение к памяти.
                                     Действие по умолчанию экви-
                                     валентно _exit(1).
                   SIGTERM           Требование завершения программы.
                                     Действие по умолчанию экви-
                                     валентно _exit(1).
                   --------------------------------------------------

                   В signal.h определен тип, названный sig_atomic_t,
                   максимальный целый тип, который процессор может
                   автоматически запоминать при асинхронном прерыва-
                   нии (для семейства 8086 это 16-ти битовое слово,
                   целое значение для Turbo C++).

                   Когда функцией raise генерируется сигнал и в слу-
                   чае внешнего события, то присходит следующее:

                   1. Если загружена программа пользователя для об-
                      работки этого сигнала, то действие для сигнала
                      устанавливается в SIG_DFL.
                   2. Вызывается подпрограмма пользователя для обра-
                      ботки этого сигнала.

                   Подпрограмма пользователя может завершаться прос-
                   тым return или abort, _exit, exit или longjmp.

                   В Turbo C++ введено расширение стандарта ANSI C,
                   для сигналов типов SIGFPE, SIGSEGV и SIGILL.
                   Пользовательская функция обработки сигнала вызы-
                   вается с двумя или одним дополнительными парамет-
                   рами. Если с помощью raise был выдан сигнал
                   SIGFPE, SIGSEGV или SIGILL, то функция вызывается
                   с одним дополнительным параметром, целым, опреде-
                   ляющим что программа обработки сигнала вызвана.
                   Точные активизационные значения для этих сигналов
                   следующие (определены в float.h):
                   --------------------------------------------------
                   Тип сигнала        Активизационное значение
                   --------------------------------------------------
                   SIGFPE             FPE_EXPLICITGEN
                   SIGSEGV            SEGV_EXPLICITGEN
                   SIGILL             ILL__EXPLICITGEN
                   --------------------------------------------------

                   Если вызывается SIGSPE при появлении исключитель-
                   ной ситуации связанной с операциями над числами с
                   плавающей точкой, то подпрограмма пользователя
                   вызывается с дополнительным параметром определяю-
                   щим FPE_xxx тип сигнала. Если вызываеются сигналы
                   SIGILL, SIGSEGV или целочисленный вариант SIGFPE
                   (FPE_INTOVFLOW или FPE_INTDIV0), в результате ис-
                   ключительной ситуации процессора, то программа
                   обработки сигнала, определнная пользователем, вы-
                   зывается с двумя параметрами:

                   1. Тип исключительной ситуации SIGFPE, SIGSEGV
                      или SIGILL (смотри float.h, в котором приве-
                      денв все типы). Первый параметр это обычный
                      тип сигнала, определенный в ANSI C.

                   2. Целый указатель на программы обработки преры-
                      вания, которая вызвала эту программу обработки
                      сигналов. Он указывает на список регистров
                      процессора, которые были сохранены при возник-
                      новении исключительной ситуации. Регистры сох-
                      раняют в том же порядке, что и параметры прог-
                      рамм обработки прерываний: BP, DI, SI, DS, ES,
                      DX, CX, BX, AX, IP, CS, FLAGS. Для изменения
                      содержимого регистра при возврате управления,
                      измените значение в этом списке. К примеру,
                      для получения нового значения SI сделайте при-
                      мерно следующее:

                            *((int*)list_pointer+2) = new_SI_value

                      Таким образом вы получаете доступ к регистрам.
                      (Смотри пример 2).

                   Могут возникнуть или быть сгенерированы следующие
                   типы сигналов. Они соответствуют исключительным
                   ситуациям, которые может распознавать 8087, типа
                   "Деление целого на 0" и "переполнение при преры-
                   вании". Они объявлены в файле float.h
                   --------------------------------------------------
                   Сигнал SIGFPE      Значение
                   --------------------------------------------------
                   FPE_INTOVFLOW      Запущен INTO с установленным
                                      флагом OF
                   FPE_INTDIV0        Деление целого на 0
                   FPE_INVALID        Неверная операция
                   FPE_ZERODIVADE     Деление на 0
                   FPE_UNDERFLOW      Выход за нижнюю границу
                   FPE_OVERFLOW       Переполнение
                   FPE_INEXACT        Точность
                   FPE_EXPLICITGEN    Запускается программа пользова-
                                      теля raise(SIGFPE)
                   --------------------------------------------------

                   Замечание: сигналы FPE_INTOVFLOW и FPE_INTDIV0
                   генерируются при целочисленных операциях, а ос-
                   тальные при операциях над числами с плавающей
                   точкой. Исключительные ситуации при работе с чис-
                   лами с плавающей точкой генерируются в зависимос-
                   ти от слова управления сопроцессором, которое
                   можно изменить с помощью _control87. Ненормальные
                   ситуации обрабатываются Turbo C++ и не передаются
                   программе обработки сигналов.

                   Могут появиться следующие сигналы SIGSEGV:
                   --------------------------------------------------
                   Сигнал SIGSEGV     Значение
                   --------------------------------------------------
                   SEGV_BOUND         Выход за границы
                   SEGV_EXPLICITGEN   вызвана raise(SIGSEGV)
                   --------------------------------------------------

                   Замечание: Процессоры 8088 и 8086 не имеют коман-
                   ды bound. 186, 286, 386 и NEC V серии имеют эту
                   команду. Т.о. при работе с 8088 и 8086 сигнал
                   SEGV_BOUND возникнуть не может. Turbo C++ не ис-
                   пользует эти команды, однако они могут появиться
                   во встроенном коде или в ассемблерных подпрограм-
                   мах, с которыми ваша программа компонуется.

                   Могут возникнуть следующие сигналы SIGILL:

                   --------------------------------------------------
                   Сигнал SIGILL      Значение
                   --------------------------------------------------
                   ILL_EXECUTION      Попытка неверной операции
                   ILL_EXPLICITGEN    вызов raise(SIGILL)
                   --------------------------------------------------

                   Замечание: 8088, 8086, NEC V20 и NEC V30 не имеют
                   исключительной ситуации по неверной инструкции.
                   186, 286, 386, NEC V40 и NEC V50 имеют эту ситуа-
                   цию. Т.о. при работе с процессорами 8088, 8086,
                   NEC V20 и NEC V30 сигнал типа ILL_EXECUTION воз-
                   никнуть не может.

                   Замечание. Если тип сигнала SIGFPE, SIGSEGV или
                   SIGILL, то возврат из программы обработки сигнала
                   не желателен, т.к. состояние 8087 нарушено, ре-
                   зультат целочисленного деления неверен, возникло
                   переполнение, граничная операция ошибочна, или
                   была попытка выполнить несуществующую операцию.
                   Возврат может происходить только в том случае,
                   если программа обработки сигналов изменила регис-
                   тры так, что существует корректный контекст возв-
                   рата, или если сигнал был генерирован с помощью
                   raise, напрмер FPE_EXPLICITGEN, SEGV_EXPLICITGEN
                   или ILL_EXPLICITGEN. В основном, в этом случае
                   нужно печатать сообщение и завершать выполнение
                   программы с помощью _exit, exit или abort. Если
                   возврат осуществляется при другом состоянии, то в
                   этом случае результаты дальнейшей работы програм-
                   мы непредсказуемы.

Возвращаемое       При успешном завершении signal возвращае указатель
значение           на старую программу обработки сигнала для данного
                   типа сигналов. При ошибке signal возвращает
                   SIG_ERR и присваивает переменной errno значение
                   EINVAR.

Переносимость      signal поддерживается стандартом ANSI C.

Смотрите также      abort _control7, ctrlbrk exit longjmp raise
                    setjmp

Пример:

/* В этом примере загружается программа обработки
   сигнала, возникающего при нажатии Ctrl-Break */

#include
#include
#include

void Cather(int sig)
{
   printf("\n Теперь программа обработки Break");
   exit(1);
}

int main(void)
{
   signal(SIGINT,Cather);
   for(;;)
     printf("\n Сейчас основная программа \n");
}

Пример 2:

/* В этом примере загружается программа обработки
   сигналов SIGFPE, которая отлавливает состояние
   переполнения при выполнении целочисленных опе-
   раций, восстанавливает нормальное значение в
   АХ и возвращает управление */

#pragma inline
#include
#include

void Catcher(int sig, int type, int *reglist)
{
   printf("Поймал!\n");
   *(reglist+8)=3; /* AX = 3 */
}

int main(void)
{
signal(SIGFPE,Catcher);
asm    mov   ax,07FFFH         /* AX = 32767 */
asm    inc   ax                /* вызвать перепол-
                                  нение */
asm    into                     /* активизировать
                                   программу */

/* при возврате управления программа обработки
   сигнала заносит в AX значение 3. Если этого не
   сделать, то в следующей операции опять вызовет
   into (после dec) */

asm    dec   ax                  /* нет перепол. */
asm    into                      /* не активизир. */


cpp

sin
Функция            Вычисляет синус.

Синтаксис          Вещественная версия     Комплексная версия
                   #include        #include
                   double sin(double x);   complex sin(complex x);

Файл, содержащий   Вещественная версия     Комплексная версия
прототип           math.h                  complex.h

Описание           sin вычисляет синус х. Угол задается в радианах.

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

                   Синус комплексного числа определен следующим об-
                   разом:

                       sin(z)=(exp(i*z)-exp(-i*z))/(2i)

Возвращаемое       Вещественная версия sin возвращает значение в диа-
значение           пазоне от -1 до 1.  Управление  ошибками  для  этой
                   функции можно изменить с помощью функции matherr.

Переносимость      sin поддерживается в системах UNIX и определена в
                   ANSI C. Комплексная версия требует С++ и скорее
                   всего непереносима.

Смотрите также      acos asin atan atan, complex cos tan

Пример:

#include
#include
int main(void)
{
   double result;
   double x = 0.5;
   result = sin(x);
   printf("Синус от %1f равен %1f\n",x,result);
   return 0;


cpp

sinh
Функция            Вычисляет гиперболический синус.

Синтаксис          Вещественная версия     Комплексная версия
                   #include        #include
                   double sinh(double x);  complex sinh(complex x);

Файл, содержащий   Вещественная версия     Комплексная версия
прототип           math.h                  complex.h

Описание           Вычисляет гиперболический синус: (e^x-e^-x)/2.

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

                   Гиперболический синус комплексного числа опреде-
                   лен следующим образом:

                       sinh(z)=(exp(z)-exp(-z))/2

Возвращаемое       sinh возвращает гиперболический синус от x.
значение
                   В случае переполнения sinh возвращает значение
                   HUGE_VAL с сответствующим знаком, и errno уста-
                   навливается в ERANGE.

Переносимость      sinh поддерживается в системах UNIX и определена в
                   ANSI C. Комплексная версия требует С++ и скорее
                   всего непереносима.

Смотрите также      acos asin atan atan, complex cos cosh sin
                    tan tanh

Пример:

#include
#include
int main(void)
{
   double result;
   double x = 0.5;
   result = sinh(x);
   printf("Гиперболический синус от %1f равен %1f\n",x,result);
   return 0;


cpp

sleep
Функция            Замораживает выполнение программы на заданный
                   интервал.

Синтаксис          #include
                   void sleep(unsigened seconds);

Файл, содержащий   dos.h
прототип

Описание           При вызове функции sleep выполнение программы замо-
                   раживается на время (в секундах), заданное пара-
                   метром seconds. Точность интервала соблюдается до
                   сотых долей секунды, или ориентиром точности мо-
                   гут служить внутренние "тики" DOS, в зависимости
                   от того, что является более точным.

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

Переносимость      Поддерживается на системах UNIX.

Смотрите также      delay

Пример:

#include
#include

int main(void)
{
   int i;
   for(i=1; i<5; i++)
   {
      printf("Останов на %d секунд\n");
      sleep(i);
   }
   return 0;


cpp

sopen
Функция            Открывает разделяемый файл.

Синтаксис          #include
                   #include
                   #include
                   #include
                   int sopen(char *path, int access, int shflag,
                                                           int mode);

Файл, содержащий   io.h
прототип

Описание           Функция sopen открывает файл, имя которого опреде-
                   лено параметром path, и подготавливает его к пос-
                   ледующим разделяемым операциям чтения и/или запи-
                   си, в зависимости от параметров access, shflag и
                   mode.

                   sopen это макро, определенное следующим образом:

                        open(path, (access) | (shflag), mode)

                   Для функции sopen параметр access конструируется
                   путем логического побитового сложения флагов, пе-
                   речисленных в двух следующих списках. Из первого
                   списка может быть использован только один флаг;
                   остальные флаги могут применяться в любых логи-
                   ческих комбинациях.

                   Список 1: флаги чтения/записи.

                   O_RDONLY   открытие только для чтения.
                   O_WRONLY   открытие только для записи.
                   O_RDWR     открытие для чтения и записи.

                   Список 2: остальные флаги доступа.

                   O_NDELAY   Не используется; для совместимости с
                              системой UNIX.
                   O_APPEND   Если флажок установлен, то перед каждой
                              операцией записи, указатель файла бу-
                              дет устанавливаться на конец файла.
                   O_CREAT    Если файл существует, этот флажок не
                              имеет никакого значения. Если файл не
                              существует, он будет создан, и биты из
                              аргумента mode будут использованы
                              для установки битов-атрибутов файла,
                              как и в функции chmod.
                   O_TRUNC    Если файл существует, его длина усека-
                              ется до 0. Атрибуты файла остаются не-
                              изменными.
                   O_EXCL     Используется только вместе с O_CREAT.
                              Если файл уже существует, то происходит
                              возврат по ошибке.
                   O_BINARY   Данный флаг может быть установлен для
                              гарантированного открытия файла в
                              двоичном режиме.
                   O_TEXT     Данный флаг может быть установлен для
                              гарантированного открытия файла в текс-
                              товом режиме.

                   Эти константы (O_...) определены в файле fcntl.h.

                   Если ни O_BINARY, ни O_TEXT не указаны, файл отк-
                   рывается в режиме трансляции, соответственно гло-
                   бальной переменной _fmode.

                   Если в построении параметра access участвует флаг
                   O_CREAT, вам необходимо указать аргумент mode из
                   следующих символических констант, определенных в
                   файле sys\stat.h.
                   --------------------------------------------------
                   Значение параметра    Возможности доступа
                   mode
                   --------------------------------------------------
                   S_IWRITE              Разрешение на запись.
                   S_IREAD               Разрешение на чтение.
                   S_IREAD/S_IWRITE      Разрешение на чтение/запись.
                   --------------------------------------------------

                   shflag определяет тип разделения файла, определя-
                   емого параметром path. Символические константы
                   для shflag определены в файле share.h.
                   --------------------------------------------------
                   Значение shflag   Что он делает
                   --------------------------------------------------
                   SH_COMPAT         Устанавливает режим совместимос-
                                     ти
                   SH_DENYRW         Запрещает доступ для чтения и
                                     записи
                   SH_DENYWR         Запрещает доступ для записи
                   SH_DENYRD         Запрещает доступ для чтения
                   SH_DENYNONE       Разрешает доступ для чтения и
                                     записи
                   SH_DENYNO         Разрешает доступ для чтения и
                                     записи
                   --------------------------------------------------

Возвращаемое       При успешном завершении sopen возвращает целое
значение           неотрицательное число handle - логический номер
                   открытого файла. Указатель файла (указатель теку-
                   щей позиции) устанавливается на начало файла. При
                   ошибке функция возвращает значение -1, и перемен-
                   ная errno получает одно из следующих значений:

                   ENOENT - Маршрут или имя файла не найдены;
                   EMFILE - Слишком много открытых файлов;
                   EACCES - Доступ запрещен;
                   EINVACC - Неверный код доступа.

Переносимость      Функция sopen поддерживается на системах UNIX.
                   На версии 7 системы UNIX мнемоника O_тип не опре-
                   делена. Система UNIX SYSTEM 3 пользуется всеми
                   мнемониками O_тип за исключением O_BINARY.

Смотрите также      chmod close creat lseek lock _open open
                    unlock unmask

Пример:

#include
#include
#include
#include
#include
#include

int main(void)
{
   int handle;
   int status;
   handle = sopen("c:\\autoexec.bat",O_RDONLY,SH_DENYNO,S_IREAD);
   if(!handle)
   {
      printf("Ошибка sopen\n");
      exit(1);
   }
   status = access("c:\\autoexec.bat",6);
   if(status == 0)
      printf("Разрешены чтение/запись\n");
   else
      printf("Чтение/запись запрещены\n");
   close(handle);
   return 0;


cpp

sound
Функция            Запускает встроенный динамик PC на генерацию зву-
                   ка указанной частоты.

Синтаксис          #include
                   void sound(unsigned frequency);

Файл, содержащий   dos.h
прототип

Описание           sound запускает встроенный динамик на генерацию
                   звука указанной частоты. Частота определяется па-
                   раметром frequency (в Герцах, т.е. циклах в се-
                   кунду). Для выключения динамика, включенного фун-
                   кцией sound, воспользуйтесь функцией nosound.

Переносимость      sound работает только на компьютерах, совместимых
                   с IBM PC. Соответствующая функция есть в Turbo
                   Pascal.

Смотрите также      delay nosound

Пример:

/* Звук частотой 7 Гц в течении 10 секунд
   Возможно ваш РС не способен генерировать такой звук */

int main(void)
{
  sound(7);
  delay(10000);
  nosound();


cpp

spawn
Функция            Создает и запускает дочерний процесс.

Синтаксис          #include
                   #include
                   int spawnl(int mode, char *pathname, char *arg0,
                         arg1,...,argn, NULL);
                   int spawnle(int mode, char *pathname, char *arg0,
                         arg1,...,argn, NULL);
                   int spawnlp(int mode, char *pathname, char *arg0,
                         arg1,...,argn, NULL);
                   int spawnlpe(int mode, char *pathname, char *arg0,
                         arg1,...,NULL, char *envp[]);
                   int spawnv(int mode, char *pathname, char*argv[]);
                   int spawnve(int mode, char *pathname,
                         char *argv[], char *envp[]);
                   int spawnvp(int mode, char *pathname,
                         char *argv[]);
                   int spawnvpe(int mode, char *pathname,
                         char *argv[], char * envp[]);

Файл, содержащий   process.h
прототип

Описание           Функции семейства spawn... создают и запускают
                   другие программные файлы, известные под названием
                   "дочерний процесс". Для загрузки и выполнения до-
                   чернего процесса должно быть достаточно памяти.

                   Значение параметра mode влияет на то, каким обра-
                   зом материнский процесс продолжит свои действия
                   после вызова функции spawn... . Далее перечислены
                   возможные значения аргумента mode:

                   P_WAIT Ставит родительский процесс в состояние
                          ожидания до тех пор, пока дочерний процесс
                          не завершится.

                   P_NOWAIT Продолжает работу родительского процесса
                            одновременно с работой дочернего процес-
                            са.

                   P_OVERLAY Перекрывает дочерним процессом область
                             памяти первоначально занятую родитель-
                             ким процессом. Работает аналогично вы-
                             зову функции exec... .

                   Примечание. Значение P_NOWAIT в данной версии не
                   поддерживается; использование его приведет к
                   ошибке.

                   Аргумент pathname представляет собой имя файла
                   дочернего процесса. Функции семейства spawn...
                   осуществляют поиск файла с данным именем, пользу-
                   ясь следующим стандартным алгоритмом DOS:

                   - Нет расширения или нет точки; осуществляется
                     поиск по точному имени файла, если по такому
                     имени файл не найден, добавляется .COM, и поиск
                     производится снова, если опять не найден, то
                     добавляет .EXE и поиск повторяется;

                   - Расширение имени присутствует; поиск произво-
                     дится только по точному имени файла;

                   - Точка присутствует; поиск производится только
                     по имени файла - без расширения.

                   - Если path не содержит имени директории, то фун-
                     кции spawn... с суффиксом p производят поиск в
                     текущей директории, а затем в директориях, ука-
                     занных в переменной окружения PATH.

                   Суффиксы, добавляемые к имени функции spawn...
                   (l, v, p, e) отражают некоторые особенности рабо-
                   ты функций:

                   p - означает, что функция будет искать дочерний
                       процесс в директориях, определяемых перемен-
                       ной операционной среды системы DOS-PATH. Без
                       задания суффикса p функция будет искать файл
                       только в текущей рабочей директории.

                   l - означает, что аргументы-указатели arg0, arg1,
                       ... argn передаются, как отдельные аргументы.
                       Обычно, суффикс l применяется, когда количес-
                       тво передаваемых аргументов известно заранее.

                   v - означает, что аргументы-указатели передаются
                       в виде массива указателей: argv[0],
                       ...argv[n]. Обычно суффикс v употребляется
                       при переменном числе аргументов.

                   e - обозначает, что дочернему процессу может быть
                       передан аргумент envp, что позволяет менять
                       операционную среду дочернего процесса. Без
                       суффикса e дочерний процесс наследует опера-
                       ционную среду родительского процесса.

                   Каждая функция семейства spawn... должна иметь
                   один из двух суффиксов l или v. Суффиксы p и e
                   необязательны.

                   Например:

                   - функция с именем spawnl - это функция семейства
                     spawn..., принимающая отдельные аргументы, осу-
                     ществляющая поиск файла дочернего процесса в
                     корневой или рабочей директории и передающей
                     дочернему процессу операционную среду родитель-
                     ского процесса.

                   - Функция spawnvpe - это функция семейства
                     spawn..., которая принимает массив аргумен-
                     тов-указателей, применяет параметр среды PATH
                     для поиска файла дочернего процесса и передает
                     ему параметр envp, позволяющий ему изменить
                     свою операционную среду.

                   Функции семейства spawn... должны передавать до-
                   чернему процессу по крайней мере один аргумент
                   (arg0 или argv[0]). По соглашению данным аргумен-
                   том является копия параметра pathname. (Использо-
                   вание для данного нулевого аргумента других зна-
                   чений не вызовет ошибку).
                   В версиях операционной системы DOS 3.0 и выше
                   поддерживается аргумент pathname. В более ранних
                   версиях не может использоваться значение нулевого
                   аргумента (arg0 или argv[0]).

                   При использовании суффикса l arg0 обычно адресует
                   pathname, а остальные аргументы arg1,...,argn яв-
                   ляется указателями на символьные строки, реально
                   составляющие список аргументов. Обязательный ад-
                   ресный нуль NULL завершает список аргументов.

                   При использовании суффикса e, список новых назна-
                   чений операционной среды передается посредством
                   аргумента envp. Данный аргумент представляет со-
                   бой массив указателей, где каждый элемент указы-
                   вает на символьную строку с нулевым окончанием в
                   форме:

                            envvar = value,

                   где envvar - это имя переменной операционной сре-
                   ды, а value - это строковое, значение, присваива-
                   емое переменной envvar. Последним элементом мас-
                   сива envp[] является NULL. Когда envp[0] равно
                   NULL, дочерний процесс наследует назначения среды
                   родительского процесса.

                   Общая длина списка arg0+arg1+...+argn (или
                   argv[0]+argv[1]+...+argv[n]), включая пробелы,
                   разделяющие аргументы, должна быть <128 байт,
                   причем нулевые окончания не учитываются.

                   После вызова функции spawn... любые открытые ра-
                   нее файлы остаются открытыми в дочернем процессе.

Возвращаемое       При успешном завершении возвращается статус выхода
значение           из дочернего процесса (0- для нормального выхода).
                   Если дочерний процесс специально вызывал функцию
                   exit с ненулевым аргументом, его выходной статус
                   также получит ненулевое значение.

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

                   E2BIG  - Список аргументов слишком длинный;
                   EINVAL - Неверный аргумент:
                   ENOENT - Маршрут или имя файла не найдены;
                   ENOEXEC - Ошибка формата EXEC:
                   ENOMEM  - Не хватает памяти.

Переносимость      Функции семейства spawn... уникальны для DOS.

Смотрите также      abort atexit _exit exit exec.., _fpreset
                    searchpath system

Пример 1:

#include
#include
#include

int main(void)
{
   int result;
   clrscr();
   result = spawnl(P_WAIT,"tcc.exe",NULL);
   if(result==-1)
   {
      perror("Ошибка spawnl");
      exit(1);
   }
   return 0;
}

Пример 2:

#include
#include
#include

int main(void)
{
   int result;
   clrscr();
   result = spawnle(P_WAIT,"tcc.exe",NULL,NULL);
   if(result==-1)
   {
      perror("Ошибка spawnle");
      exit(1);
   }
   return 0;


cpp

sprintf
Функция            Производит форматированный вывод в строку.

Синтаксис          #include
                   int sprintf(char *buffer, const char *format[,
                         argument,...]);

Файл, содержащий   stdio.h
прототип

Описание           sprintf получает набор аргументов, применяет к
                   каждому спецификацию формата, содержащуюся в
                   строке формата (format) и выводит сформатирован-
                   ные данные в строку.

                   sprintf применяет к первому аргументу первую спе-
                   цификацию формата, ко второму - вторую, и т.д.
                   Число спецификаций формата должно соответствовать
                   числу аргументов.

                   Описание спецификаций формата приведено в разделе
                   посвященном функции printf.

Возвращаемое       sprintf возвращает число выведенных байт. Завер-
значение           шающий нулевой байт не считается. При возникнове-
                   нии ошибки sprintf возвращает EOF.

Переносимость      sprintf поддерживается в системах UNIX и стандар-
                   том ANSI C. Определена в стандарте Kernighan &
                   Ritchie.

Смотрите также      fprintf printf

Пример:

#include
#include

int main(void)
{
   char buffer[80];
   sprintf(buffer,"Аппроксимация Pi = %f\n",M_PI);
   puts(buffer);
   return 0;


cpp

sqrt
Функция            Для вещественного аргумента вычисляет квадратный
                   корень.

Синтаксис          Вещественная версия     Комплексная версия
                   #include        #include
                   double sqrt(double x);  complex sqrt(complex x);

Файл, содержащий   Вещественная версия     Комплексная версия
прототип           math.h                  complex.h

Описание           sqrt вычисляет положительный квадратный корень от
                   параметра x.

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

                   Для комплексного числа x, sqrt(x) дает комплекс-
                   ный корень, чей аргумент arg, это arg(x)/2;

                   Комплексный квадратный корень определяется следу-
                   ющим образом:

                   sqrt(z)=sqrt(abs(z))(cos(arg(z)/2)+isin(arg(z)/2))

Возвращаемое       При успешном завершении sqrt возвращает вычислен-
значение           ное значение: положительный квадратный корень от
                   x.

                   Если x отрицательно, то переменной errno присваи-
                   вается значение:

                   EDOM - Ошибка области определения

                   и возвращает значение 0.

Переносимость      sqrt поддерживается в системах UNIX и определена в
                   ANSI C. Комплексная версия требует С++ и непере-
                   носима.

Смотрите также      complex exp log pow

Пример:

#include
#include
int main(void)
{
   double result;
   double x = 0.4;
   result = sqrt(x);
   printf("Корень квадратный от %1f равен %1f\n",x,result);
   return 0;


cpp

srand
Функция            Инициализирует генератор случайных чисел.

Синтаксис          #include
                   void srand(unsigned seed);

Файл, содержащий   stdlib.h
прототип

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

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

Переносимость      srand доступна в системах UNIX и поддерживается
                   стандартом ANSI C.

Смотрите также      rand random randomize

Пример:

#include
#include
#include
int main(void)
{
   int i;
   time_t t;
   srand((unsigned)time(&t));
   printf("10 случайных чисел от 0 до 99 \n\n");
   for (i=0; i<10; i++)
       printf("%d\n", rand()%100);
return 0;


cpp

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

Синтаксис          #include
                   int sscanf(const char *buffer, const char *format[,
                                       adress,...]);

Файл, содержащий   stdio.h
прототип

Описание           Функция sscanf просматривает набор входных полей,
                   по одному символу, считывая их из строки. Затем
                   каждое поле форматируется в соответствии со спе-
                   цификацией формата, посылаемой sscanf через аргу-
                   мент format. В конце sscanf сохраняет введенные
                   отформатированные поля по адресам, посылаемым в
                   качестве аргументов после format. Число аргумен-
                   тов должно соответствовать числу спецификаций
                   формата.

                   Описание спецификаций формата приведено в разделе
                   посвященном функции scanf.

                   sscanf заканчивает просмотр поля перед достижени-
                   ем нормального символа конца поля (пробелб, табу-
                   ляция) или вообще окончить просмотр строки по не-
                   которым причинам. Смотри scanf.

Возвращаемое       sscanf возвращает число, соответствующее числу ус-
значение           пешно обработанных полей, это число не включает в
                   себя поля, которые былы обработаны но не сохране-
                   ны.При попытке чтения за концом строки sscanf
                   возвращает EOF. Если ни одно поле не было сохра-
                   нено, то функция возвращает 0.

Переносимость      sscanf доступна в системах UNIX и поддерживается
                   стандартом ANSI C. Она определена в Керниган и
                   Ричи.

Смотрите также      fscanf scanf

Пример:

#include

char buffer[] = "a 3.14159 12 a-string\n";

int main(void)
{
   char ch;
   float f;
   int i;
   char string[20];
   sscanf(buffer,"%c %f %d %s",&ch,&f,&i,string);
   printf("%c %f %i %s",ch,f,i,string);
   return 0;


cpp

stat
Функция            Получает информацию о файле.

Синтаксис          #inslude
                   int stat(char *path, struct stat *buff);

Файл, содержащий   sys\stat.h
прототип

Описание           Функция stat записывает информацию о файле (или
                   директории) в структуре stat.

                   Аргумент buff адресует структуру stat (определен-
                   ную в файле sys\stat.h). Структура содержит сле-
                   дующие поля:

                   st_mode битовая маска, дающая информацию о режиме
                           открытия файла.

                   st_dev идентификатор дисковода содержащего файл.

                   st_rdev также, как и st_dev.

                   st_nlink присваевается целая константа 1.

                   st_size размер открытого файла в байтах.

                   st_atime ближайшее время открытия файла, во время
                            которого он был модифицирован.

                   st_mtime также, как и st_atime.

                   st_ctime также, как и st_atime.

                   Структура stat содержит на три поля больше, чем
                   перечислено выше, но они содержат данные, которые
                   под управлением MS-DOS не имеют значения.

                   Битовая маска, дающая информацию о режиме откры-
                   того файла, содержит следующие биты:

                   Один из следующих битов должен быть выставлен:

/* прим. пер. в    S_IFCHR установлен, если параметр handle указывает
оригинале нет: */          на устройство (fstat);

                   S_IFREG установлен, если обычный файл определяет-
                           ся параметром handle (fstat),или парамет-
                           ром path (stat).

                   S_IFDIR установлен, если параметр path определяет
                           директорию (stat);

                   Один или оба следующих бита должны быть выставле-
                   ны:

                   S_IWRITE установлен, если пользователь имеет раз-
                            решение на запись;

                   S_IREAD установлен, если пользователь имеет раз-
                           решение на чтение.

                   Для функции stat битовая маска содержит также би-
                   ты пользовательского выполнения; они устанавлива-
                   ются в соответствии с расширением имени открытого
                   файла. Битовая маска также имеет биты чтения/за-
                   писи, они устанавливаются в соответствии с режи-
                   мом доступа к файлу.

Возвращаемое       Если информация об открытом файле была успешно по-
значение           лучена, функция возвращает 0. В случае ошибки
                   (невозможно получить информацию), функция возвра-
                   щает значение -1 и устанавливает переменную
                   errno.

                   ENOENT - Файл или маршрут не найдены.

Переносимость      stat доступна в системах UNIX и поддерживается
                   стандартом ANSI C.

Смотрите также      access chmod fstat stat

Пример:

#include
#include
#include

#define FILENAME "TEST.$$$"

int main(void)
{
   struct stat statbuf;
   FILE *stream;
   /* открыть файл для изменения */
   if((stream = fopen(FILENAME,"w+")) == NULL)
   {
      fprintf(stderr,"Не могу открыть файл.\n");
      return 1;
   }
   /* получить информацию о файле */
   stat(FILENAME,&statbuf);
   fclose(stream);
   /* вывести полученную информацию */
   if(statbuf.st_mode & S_IFCHR)
     printf("Это устройство\n");
   if(statbuf.st_mode & S_IFREG)
     printf("Это файл\n");
   if(statbuf.st_mode & S_IREAD)
     printf("Разрешение на чтение\n");
   if(statbuf.st_mode & S_IWRITE)
     printf("Разрешение на запись");
   printf("Метка диска:%c\n",'A'+statbuf.st_dev);
   printf("Размер в байтах: %ld\n",statbuf.st_size);
   printf("Время последнего открытия: %s\n",
           ctime(&statbuf.st_ctime));
   return 0;


cpp

stime
Функция            Устанавливает системное время и дату.

Синтаксис          #include
                   int stime (time_t *tp);

Файл, содержащий   time.h
прототип

Описание           stime устанавливает системное время и дату. tp
                   указывает на значение, содержащее число секунд,
                   прошедшее с 1 января 1970, по Гринвичискому мери-
                   диану.

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

Переносимость      stime доступна в системах UNIX.

Смотрите также      asctime ftime gettime gmtime localtime time
                    tzset

Пример:

#include
#include
#include

int main(void)
{
   time_t t;
   struct tm *area;
   t = time(NULL);
   area = localtime(&t);
   printf("Секунд с 1970 года: %ld\n",t);
   printf("Местное время %s",asctime(area));
   t++;
   area = localtime(&t);
   printf("Добавили секунду: %s",asctime(area));
   t += 60;
   area = localtime(&t);
   printf("Добавили минуту: %s",asctime(area));
   t += 3600;
   area = localtime(&t);
   printf("Добавили час: %s",asctime(area));
   t += 86400L;
   area = localtime(&t);
   printf("Добавили сутки: %s",asctime(area));
   t += 2592000L;
   area = localtime(&t);
   printf("Добавили месяц: %s",asctime(area));
   t += 31536000L;
   area = localtime(&t);
   printf("Добавили год: %s",asctime(area));
   return 0;


cpp

stpcpy
Функция            Функция stpcpy копирует одну символьную строку в
                   другую.

Синтаксис          #include
                   char *stpcpy(char *dest, const char *src);

Файл, содержащий   string.h
прототип

Описание           stpcpy копирует строку src в строку dest вплоть
                   до нулевого символа окончания строки.

Возвращаемое       stpcpy возвращает dest + strlen(src).
значение

Переносимость      stpcpy поддерживается на системах UNIX.

Пример:

#include
#include

int main(void)
{
   char string[10];
   char *strl = "abcdefghi";
   stpcpy(string,strl);
   printf("%s\n",string);
   return 0;


cpp

strcat
Функция            Добавляет одну строку к другой.

Синтаксис          #include
                   char *strcat(char *dest, char *src);

Файл, содержащий   string.h
прототип

Описание           strcat  добавляет копию одной строки к другой.

Возвращаемое       strcat возвращает указатель на соединенные
значение           строки.

Переносимость      strcat поддерживается на системах UNIX и совме-
                   стимых с ANSI C. Она описана в Kernighan и
                   Ritchie.

Пример:

#include
#include

int main(void)
{
   char destination[25];
   char *blank = " ", *c = "C++", *turbo = "Turbo";
   strcpy(destination,turbo);
   strcpy(destination,blank);
   strcpy(destination,c);
   printf("%s\n",destination);
   return 0;


cpp

strchr
Функция            Ищет в строке первое появление данного символа.

Синтаксис          #include
                   char *strchr(const char *s, int c);

Файл, содержащий   string.h
прототип

Описание           strchr просматривает строку (с начала вперед),
                   производя поиск на заданный символ. Функция
                   strchr реагирует на первое появление символа c в
                   строке s. Нулевое окончание считается частью
                   строки, таким образом, в примере:

                       strchr(strs,0)

                   в качестве результата функции возвращается указа-
                   тель на нулевое окончание в строке "strs".

Возвращаемое       strchr  возвращает указатель на первый встретив-
значение           шийся в строке str символ ch; если символ ch не
                   появляется в строке str, функция strchr возвраща-
                   ет нуль (NULL).

Переносимость      strchr поддерживается на системах UNIX и совме-
                   стимых с ANSI C. Она описана в Kernighan и
                   Ritchie.

Смотрите также      strcspn strrchr

Пример:

#include
#include

int main(void)
{
   char string[15];
   char *ptr, c = 'r';
   strcpy(string,"This is a string");
   ptr = strchr(string,c);
   if(ptr)
      printf("Символ %c в позиции %d\n",c,ptr-string);
   else
      printf("Символ не найден\n");
   return 0;


cpp

strcmp
Функция            Сравнивает одну строку с другой.

Синтаксис          #include
                   int strcmp(char *s1, const char *s2);

Файл, содержащий   string.h
прототип

Описание           strncmp выполняет беззнаковое сравнение строк s1
                   и s2, начиная с первого символа в каждой строке и
                   продолжая сравнение последующих символов до тех
                   пор, пока не встретятся несовпадающие символы или
                   строки не кончатся.

Возвращаемое       strcmp возвращает следующие значения:
значение              < 0   если s1 меньше s2
                      ==0   если s1 равно s2
                      > 0   если s1 больше s2

Переносимость      strcmp поддерживается на системах UNIX и совме-
                   стимых с ANSI C.

Смотрите также      strcmpl strcoll stricmp strncmp strncmpl
                    strnicmp

Пример:

#include
#include

int main(void)
{
   char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
   int ptr;
   ptr = strcmp(buf2,buf1);
   if(ptr>0)
      printf("buf2 больше чем buf1\n");
   else
      printf("buf2 меньше чем buf1\n");
   ptr = strcmp(buf2,buf2);
   if(ptr>0)
      printf("buf2 больше чем buf3\n");
   else
      printf("buf2 меньше чем buf3\n");
   return 0;


cpp

strcmpi
Функция            Сравнивает строки str1 и str2 без различий ре-
                   гистров.

Синтаксис          #include
                   int strcmpi(const char *s1,const char *s2);

Файл, содержащий   string.h
прототип

Описание           strcmpi выполняет беззнаковое сравнение строк s1
                   и s2 без различий регистров (анологично stricmp
                   выполняемой как макрокоманда).

                   Она возвращает значения(<0,0,>0) в зависимости от
                   результата сравнения s1 (или части ее) и s2 (или
                   части ее).

                   Программа strcmpi анологична stricmp. strcmpi вы-
                   полняется через макрокоманду в string.h и перево-
                   дит вызов с strcmpi в stricmp. Следовательно, ес-
                   ли вы хотите использовать strcmpi, вы должны
                   включить файл string.h , чтобы сделать доступным
                   макрокоманду. Эта макрокоманда совместима с дру-
                   гими компиляторами С.

Возвращаемое       strcmpi возвращает следующие значения: (int)
значение             < 0    если s1 меньше s2
                      ==0   если s1 равно s2
                      > 0   если s1 больше s2

Смотрите также      strcmp strcoll stricmp strncmp strncmpi
                    strnicmp

Пример:

#include
#include

int main(void)
{
   char *buf1 = "BBB", *buf1 = "bbb";
   int ptr;
   ptr = strcmpi(buf2,buf1);
   if(ptr>0)
      printf("buf2 больше чем buf1\n");
   if(ptr==0)
      printf("buf2 равен buf1\n");
   if(ptr<0)
      printf("buf2 меньше чем buf1\n");
   return 0;


cpp

strcoll
Функция            Сравнивает две строки.

Синтаксис          #include
                   int strcoll(char *s1,char *s2);

Файл, содержащий   string.h
прототип

Описание           strcoll выполняет сравнение строк s1 и s2 в соот-
                   ветствии со списком, определяемом с помощью
                   setlocale.

Возвращаемое       strcoll возвращает следующие значения:
значение              < 0   если s1 меньше s2
                      ==0   если s1 равно s2
                      > 0   если s1 больше s2

Смотрите также      strcmp strcmpi stricmp strncmp strncmpi
                    strnicmp strxfrm

Пример:

#include
#include

int main(void)
{
   char *two = "International";
   char *one = "Borland";
   int check;
   check = strcoll(one,two);
   if(check)
      printf("Строки равны\n");
   if(check<0)
      printf("%s идет перед %s\n",one,two);
   if(check>0)
      printf("%s идет перед %s\n",two,one);
   return 0;


cpp

strcpy
Функция            Копирует одну строку в другую.

Синтаксис          #include
                   char *strcpy(char *dest, const char *src);

Файл, содержащий   string.h
прототип

Описание           stpcpy копирует байты из строки src в строку
                   destin и останавливается после передачи нулевого
                   окончания.

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

Переносимость      strcpy поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Пример:

#include
#include

int main(void)
{
   char string[10];
   char *strl = "abcdefghi";
   strcpy(string,strl);
   printf("%s\n",string);
   return 0;


cpp

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

Синтаксис          include
                   size_t strcspn(const char*s1, const char*s2);

Файл, содержащий   string.h
прототип

Возвращаемое       strcspn возвращает длину первого сегмента строки
значение           s1, который не содержит ни одного символа из
                   имеющихся в строке s2.

Переносимость      strcspn поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Смотрите также      strchr strrchr

Пример:

#include
#include
#include

int main(void)
{
   char *string1 = "1234567890";
   char *string2 = "747DC8";
   int length;
   length = strcspn(string1,string2);
   printf("Строки пересекаются в позиции %d\n",length);
   return 0;


cpp

strdup
Функция            Копирует строку по новому адресу в памяти.

Синтаксис          #include
                   char *strdup(char *s);

Файл, содержащий   string.h
прототип

Описание           Получает дубль строки str, выделяя пaмять  с
                   помощью функции malloc. Пространство, выделенное
                   для копии имеет длину (strlen(str)+1) байтов.
                   Пользователь несет ответственность за освобожде-
                   ние памяти, отведенной для strdup, когда она бо-
                   лее не нужна.

Возвращаемое       Возвращает указатель на область памяти,
значение           содержащую дубль строки str, или NULL, если па-
                   мять не может быть выделена.

Переносимость      strdup поддерживается на системах UNIX.

Смотрите также      free

Пример:

#include
#include
#include

int main(void)
{
   char *dup_str,*string = "abcde";
   dup_str = strdup(string);
   printf("%s\n",dup_str);
   free(dup_str);
   return 0;


cpp

strerror
Функция            Функция strerror возвращает указатель на строку
                   сообщения об ошибке.

Синтаксис          #include
                   char *strerror(int errnum);

Файл, содержащий   string.h, stdio.h
прототип

Описание           sterror берет целый параметр errnum, номер ошиб-
                   ки, и возвращает указатель на строку сообщения об
                   ошибке, связанную с errnum.

Возвращаемое       Функция sterror возвращает указатель на строку, в
значение           которой находится сконструированное сообщение.
                   Строка строится в буфере типа static и перезапи-
                   сывается при каждом вызове sterror.

Переносимость      strerror совместима с ANSI C.

Смотрите также      perror _sterror

Пример:

#include
#include

int main(void)
{
   char *buffer;
   buffer = strerror(errno);
   printf("Ошибка %s\n",buffer);
   return 0;


cpp

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

Синтаксис          #include
                   size_t _cdecl strftime(char *s, size_t maxsize,
                             const char *fmt, const struct tm *t);

Файл, содержащий   time.h
прототип

Описание           strftime форматирует время, передаваемое в аргу-
                   менте t в массив, передваемый в качестве аргумен-
                   та s, в соответствии со спецификациями формата
                   определяемыми в строке fmt. Строка формата состо-
                   ит из набора обычных символов и директив, причем
                   набор может быть нулевым. Аналогично printf ди-
                   рективы состоят из символа '%', за которым следу-
                   ет символ, определяющих подстановку, выполняемую
                   в этом месте. Все обычные символы копируются без
                   изменений. В s передается максимум maxsize симво-
                   лов.

Возвращаемое       strftime возвращет значение, определяющее число
значение           символов, помещенное в s. Если требуется помес-
                   тить в s больше чем maxsize символов, то функция
                   возвращает 0.
--------------------------------------------------------------
Спецификатор       Подстановка
формата
---------------------------------------------------------------
 %%                Символ %.
 %a                Сокращенное название дня недели.
 %A                Полное название дня недели.
 %b                Сокращенное название месяца
 %B                Полное название месяца.
 %c                Дата и время.
 %d                Число (01 до 31) из двух цифр.
 %H                Час из двух цифр (00 - 23).
 %I                Час из двух цифр (01 - 12).
 %j                День года из трех цифр (001 - 366).
 %m                Номер месяца из двух цифр.
 %M                Минуты из двух цифр (00 - 59).
 %p                AM или PM (до или после полудня).
 %S                Секунды из двух цифр (00 - 59).
 %U                Номер недели в году (Воскресенье первый день не-
                   дели), (00 - 52).
 %w                Номер дня недели, причем Воскресенье считается
                   первым днем недели (0 - 6).
 %W                Номер недели в году (Понедельник первый день не-
                   дели), (00 - 52).
 %x                Дата.
 %X                Время.
 %y                Год из двух цифр (без века: 00 - 99).
 %Y                Год с веком.
 %Z                Имя временной зоны, или ничего, если она не уста-
                   новлена.
--------------------------------------------------------------------

Переносимость      strftime поддерживается стандартом ANSI C.

Смотрите также      localtime time

Пример:

#include
#include
#include

int main(void)

{
   struct tm *time_now;
   time_t secs_now;
   char str[80];
   tzset();
   time(&secs_now);
   time_now = localtime(&secs_now);
   strftime(str, 80, "Сейчас %M минут после %I (%Z)  %A, %B, %d 19%y",
            time_now);
   printf("%s\n",str);
   return 0;


cpp

stricmp
Функция            Сравнивает две строки без различий регистров.

Синтаксис          #include
                   int stricmp(const char *s1, const char *s2);

Файл, содержащий   string.h
прототип

Описание           stricmp выполняет беззнаковое сравнение строк s1
                   и s2, начиная с первого символа в каждой строке
                   и, продолжая сравнение последующих символов до
                   тех пор пока не встретятся несовпадающие символы
                   или не кончатся строки.

                   Сравнение не различает регистры.

                   Она возвращает значения(<0,0,>0) в зависимости от
                   результата сравнения s1 (или части ее) и s2 (или
                   части ее).

                   Программа stricmpi анологична strcmpi. strcmpi
                   выполняется через макрокоманду в string.h и пере-
                   водит вызов с strcmpi в stricmp. Следовательно,
                   если вы хотите использовать strcmpi, вы должны
                   включить файл string.h , чтобы сделать доступным
                   макрокоманду.

Возвращаемое       stricmp возвращает следующие значения:
значение              < 0   если s1 меньше s2
                      ==0   если s1 равно s2
                      > 0   если s1 больше s2

Пример:

#include
#include

int main(void)
{
   char *buf1 = "BBB", *buf1 = "bbb";
   int ptr;
   ptr = stricmp(buf2,buf1);
   if(ptr>0)
      printf("buf2 больше чем buf1\n");
   if(ptr==0)
      printf("buf2 равен buf1\n");
   if(ptr<0)
      printf("buf2 меньше чем buf1\n");
   return 0;


cpp

strlen
Функция            Вычисляет длину строки.

Синтаксис          #include ;
                   size_t strlen(const char *s);

Файл, содержащий   string.h
прототип

Описание           strlen вычисляет длину строки s.

Возвращаемое       strlen возвращает число символов в строке str, не
значение           считая нулевое окончание.

Переносимость      strlen поддерживается на системах UNIX и опреде-
                   лена в стандарте ANSI C.

Пример:

#include
#include

int main(void)
{
   char *string = "Borland International";
   printf("%d\n",strlen(string));
   return 0;


cpp

strlwr
Функция            Преобразует буквы верхнего регистра в нижний ре-
                   гистр.

Синтаксис          #include
                   char *strlwr(char *s);

Файл, содержащий   string.h
прототип

Описание           strlwr преобразует буквы верхнего регистра (A-Z)
                   строки s в буквы нижнего регистра (a-z). Других
                   изменений не происходит.

Возвращвемое       strlwr  возвращает указатель на строку s.
значение

Переносимость      strlwr уникальна для DOS.

Cмотрите также      strupr.

Пример:

#include
#include

int main(void)
{
   char *string = "Borland Internatinal";
   printf("Строка до вызова strlwr: %s\n",string);
   strlwr(string);
   printf("Строка после вызова strlwr: %s\n",string);
   return 0;


cpp

strncat
Функция            Добавляет часть одной строки к другой.

Синтаксис          #include
                   char * strncat(char *dest, const char *src,
                                  size_t maxlen);

Файл, содержащий   string.h
прототип

Описание           strncat копирует maxlen символов строки src в
                   конец dest и затем добавляет нулевой символ. Мак-
                   симальная длина результирующей строки
                   strlen(dest)+maxlen.

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

Переносимость      strncat поддерживается на системах UNIX и совме-
                   стимых с ANSI C.

Пример:

#include
#include

int main(void)
{
   char destination[25];
   char *source = "States";
   strcpy(destination,"United");
   strncat(destination,source,7);
   printf("%s\n",destination);
   return 0;


cpp

strncmp
Функция            Сравнивает часть одной строки с частью другой.

Синтаксис          #include
                   int strncmp(const char *s1, const char *s2,
                                                   size_t maxlen);

Файл, содержащий   string.h
прототип

Описание           strncmp делает то же самое сравнение, что и функ-
                   ция strcmp, но просматривает только maxlen симво-
                   лов. Она начинает с первого символа в каждой
                   строке и продолжает сравнение до тех пор пока не
                   обнаружит несовпадающие символы или просмотрит
                   maxlen символов.

Возвращаемое       Она возвращает значения(<0,0,>0) в зависимости от
значение           результата сравнения s1 (или части ее) и s2 (или
                   части ее).

                   strncmp возвращает следующие значения:
                      < 0   если s1 меньше s2
                      ==0   если s1 равно s2
                      > 0   если s1 больше s2

Переносимость      strncmp поддерживается на системах UNIX и совме-
                   стимых с ANSI C.

Смотрите также       strcmp strcoll stricmp strncmpi strnicmp

Пример:

#include
#include

int main(void)
{
   char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";
   int ptr;
   ptr = strncmp(buf2,buf1,3);
   if(ptr>0)
      printf("buf2 больше чем buf1\n");
   else
      printf("buf2 меньше чем buf1\n");
   ptr = strncmp(buf2,buf2,3);
   if(ptr>0)
      printf("buf2 больше чем buf3\n");
   else
      printf("buf2 меньше чем buf3\n");
   return 0;


cpp

strncmpi
Eint strcspn(char *str1, char *str2);F

Функция            Сравнивает часть одной строки с частью другой
                   без различий регистра.

Синтаксис          #include
                   int strcmpi(const char *s1, const char *s2,
                                                         size_t n);

Файл, содержащий   string.h
прототип

Описание           strncmpi выполняет беззнаковое сравнение строк s1
                   и s2, максимальной длиной n байтов, начиная с
                   первого символа в каждой строке и, продолжая
                   сравнение последующих символов до тех пор пока не
                   встретятся несовпадающие символы или не будет
                   просмотрено n символов. Сравнение не чувствитель-
                   но к регистрам. Функция strncmpi анологична
                   strcmpi. strcmpi выполняется через макрокоманду,
                   определенную в string.h и переводит вызов с
                   strcmpi в stricmp. Следовательно, если вы хотите
                   использовать strcmpi, вы должны включить файл
                   string.h, чтобы сделать доступным макрокомнду.
                   Эта макрокоманда совместима с другими компилято-
                   рами С.

Возвращаемое       strncmpi возвращает следующие значения:
значение              < 0   если s1 меньше s2
                      ==0   если s1 равно s2
                      > 0   если s1 больше s2

Пример:

#include
#include

int main(void)
{
   char *buf1 = "BBBccc", *buf2 = "bbbccc";
   int ptr;
   ptr = strncmpi(buf2,buf1,3);
   if(ptr>0)
      printf("buf2 больше чем buf1\n");
   if(ptr<0)
      printf("buf2 меньше чем buf1\n");
   if(ptr==0)
      printf("buf2 равен buf1\n");
   return 0;


cpp

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

Синтаксис          #include
                   char *strncpy(char *dest, const char *src,
                                                       int maxlen);

Файл, содержащий   string.h
прототип

Описание           strncpy копирует точно maxlen символов из строки
                   src в строку dest, если потребуется усекая или
                   добавляя нули в dest. Целевая строка dest может
                   не иметь нулевого окончания, если длина строки
                   src - это maxlen или более.

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

Переносимость      strncpy поддерживается на системах UNIX и совме-
                   стимых с ANSI C.

Пример:

#include
#include

int main(void)
{
   char string[10];
   char *strl = "abcdefghi";
   stpncpy(string,strl,3);
   printf("%s\n",string);
   return 0;


cpp

strnicpm
Функция            Сравнивает часть одной строки с другой, без раз-
                   личий регистров.

Синтаксис          #include
                   int strnicmp(const char *s1, const char *s2,
                                 size_t maxlen);

Файл, содержащий   string.h
прототип

Описание           strnicmp выполняет знаковое сравнение s1 и s2,
                   максимально maxlen байт, начиная с первого симво-
                   ла в каждой строке и, продолжая сравнение после-
                   дующих символов до тех пор пока не встретятся не-
                   совпадающие символы или не будет достигнут конец
                   строки. Cравнение не чувствительно к регистрам.
                   Она возвращает значения(<0,0,>0) в зависимости от
                   результата сравнения s1 (или части ее) и s2 (или
                   части ее).

Возвращаемое       strnicmp возвращает следующие значения:
значение              < 0   если s1 меньше s2
                      ==0   если s1 равно s2
                      > 0   если s1 больше s2

Переносимость      strnicmp уникальна для DOS.

Пример:

#include
#include

int main(void)
{
   char *buf1 = "BBBccc", *buf2 = "bbbccc";
   int ptr;
   ptr = strnicmp(buf2,buf1,3);
   if(ptr>0)
      printf("buf2 больше чем buf1\n");
   if(ptr<0)
      printf("buf2 меньше чем buf1\n");
   if(ptr==0)
      printf("buf2 равен buf1\n");
   return 0;


cpp

strnset
Функция            Изменяет заданное число символов в строке на дан-
                   ный символ.

Синтаксис          #include
                   char *strnset(char *s,int ch, size_t n);

Файл, содержащий   string.h
прототип

Описание           strnset копирует в первые n байт строки s символ
                   ch. Если n>strlen(s), то strlen(str) получает
                   значение n. Она заканчивается, когда n символов
                   уже установлены, или когда найден нулевой символ.

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

Переносимость      strnset уникальна для DOS.

Пример:

#include
#include

int main(void)
{
   char *string = "abcdefghijklmnopqrstuvwxyz";
   char letter = 'x';
   printf("Строка до strnset: %s\n",string);
   strnset(string,letter,13);
   printf("Строка после strnset: %s\n",string);
   return 0;


cpp

stroul
Функция            strtoul преобразует строку в длинное беззнаковое
                   целое значение по заданному основанию radix.

Синтаксис          #include
                   unsigned long strtoul(const char *s,
                                          char **endptr,int radix);

Файл, содержащий   stdlib.h
прототип

Описание           stroul анологична strol за исключением того, что
                   она преобразует строку в беззнаковое длинное це-
                   лое значение, а функция strol в длинное целое.
                   Для более подробной информации обратитесь к опи-
                   санию функции strol.

Возвращаемое       stroul возвращает беззнаковое целое значение преоб-
значение           разованной строки или 0 в случае ошибки.

Переносимость      strtoul совместима с ANSI C.

Смотрите также      strtoul

Пример:

#include
#include

int main(void)
{
   char *string = "87654321", *endptr;
   unsigned long lnumber;
   lnumber = strtoul(string,&endptr,10);
   printf("Строка: %s, число: %lu\n",string,lnumber);
   return 0;


cpp

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

Синтаксис          #include
                   char *strpbrk(const char *s1, const char *s2);

Файл, содержащий   string.h
прототип

Описание           strpbrk просматривает строку s1 в поисках перво-
                   го  появление  любого символа, имеющегося в строке
                   s2.

Возвращвемое       strpbrk возвращает указатель на первое появление
значение           в строке s1 любого символа из строки s2, если
                   таких символов в строке s1 нет, возвращается зна-
                   чение NULL.

Переносимость      strpbrk поддерживается на системах UNIX и совме-
                   стимых с ANSI C.

Пример:

#include
#include

int main(void)
{
   char *string1 = "abcdefghijklmnopqrstuvwxyz";
   char *string2 = "onm";
   char *ptr;
   strpbrk(string1,string2);
   if(ptr)
      printf("strpbrk нашла первый символ %c\n",*ptr);
   else
      printf("strpbrk не нашла символов в строке.\n");
   return 0;


cpp

strrchr
Функция            Ищет в строке последнее появление данного символа.

Синтаксис          #include
                   char *strrchr(char *s, int c);

Файл, содержащий   string.h
прототип

Описание           Просматривает строку в обратном направлении, осу-
                   ществляя поиск заданного символа. strrchr находит
                   последнее появление символа c в строке s. Нулевой
                   символ завершения строки считается частью строки.

Возвращаемое       Возвращает указатель на последнее появле-
значение           ние символа c в строке str. Если символ c не
                   найден, возвращается NULL.

Переносимость      strrchr поддерживается на системах UNIX и совме-
                   стимых с ANSI C.

Смотрите также      strcspn strchr

Пример:

#include
#include

int main(void)
{
   char string[15];
   char *ptr, c = 'r';
   strcpy(string,"This is a string");
   ptr = strrchr(string,c);
   if(ptr)
      printf("Символ %c в позиции %d\n",c,ptr-string);
   else
      printf("Символ не найден\n");
   return 0;


cpp

strrev
Функция            Обращает (переворачивает) строку.

Синтаксис          #include
                   char *strrev(char *s);

Файл, содержащий   string.h
прототип

Описание           strrev переворачивает (то есть записывает с конца
                   в обратном порядке) все символы в строке, (исклю-
                   чая нулевое окончание). (Например она изменит
                   строку string\0 на строку gnirts\0).

Возвращаемое       strrev возвращается указатель на перевернутую
значение           строку. Ошибочного завершения не бывает.

Переносимость      strrev уникальна для DOS.

Пример:

#include
#include

int main(void)
{
   char *forward = "string";
   printf("Перед strrev: %s\n",forward);
   strrev(forward);
   printf("После strrev: %s\n",forward);
   return 0;


cpp

strset
Функция            Устанавливает все символы в строке s равными ука-
                   занному символу.

Синтаксис          #include
                   char *strset(char *s, int ch);

Файл, содержащий   string.h
прототип

Описание           strset устанавливает все символы в строке s в
                   символ ch. Она заканчивается, когда найден нуле-
                   вой символ завершения строки.

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

Переносимость      strset уникальна для DOS.

Смотрите также      setmem

Пример:

#include
#include

int main(void)
{
   char string[10] = "123456789";
   char symbol = 'c';
   printf("Перед strset: %s\n",string);
   strset(string,symbol);
   printf("После strset: %s\n",string);
   return 0;


cpp

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

Синтаксис          #include
                   size_t strspn(const char *s1, const char *s2);

Файл, содержащий   string.h
прототип

Описание           strspn находит первый сегмент строки s1, который
                   полностью состоит из символов строки s2.

Возвращаемое       strspn возвращает длину первого сегмента строки
значение           s1, который целиком состоит из символов строки
                   str2.

Переносимость      strspn поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Пример:

#include
#include
#include

int main(void)
{
   char *string1 = "1234567890";
   char *string2 = "123DC8";
   int length;
   length = strspn(string1,string2);
   printf("Строки отличаются с позиции: %d\n",length);
   return 0;


cpp

strstr
Функция            Ищет в строке данную подстроку.

Синтаксис          #include
                   char *strstr(const char *s1, const char *s2);

Файл, содержащий   string.h
прототип

Описание           strstr просматривает s1 на первое появление
                   подстроки s1.

Возвращаемое       strstr возвращает указатель на элемент в s1, с
значение           которого начинается подстрока s2. (Указатель на s2
                   в s1). Если s1 не содержит s2, функция возвращает
                   NULL.

Переносимость      strstr поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Пример:

#include
#include

int main(void)
{
   char *str1 = "Borland International", *str2 = "nation", *ptr;
   ptr = strstr(str1,str2);
   printf("Подстрока: %s\n",ptr);
   return 0;


cpp

strtod
Функция            Преобразует строку в число двойной точности.

Синтаксис          #include
                   double strtod(const char *s, char **endptr);

Файл, содержащий   string.h
прототип

Описание           strtod преобразует символьную строку s в число
                   двойной точности. Строка s - это последователь-
                   ность символов, которая может быть интерпретиро-
                   вана, как значение двойной точности; Символы дол-
                   жны соответствовать следующему формату:

                   [ws] [sn] [ddd] [.] [ddd] [fmt[sn]ddd], где

                   [ws] - необязательный незначащий символ пробела;
                   [sn] - необязательный знак (+ или -);
                   [ddd] - необязательные цифры;
                   [fmt] - необязательные символы e или E;
                   [.] - необязательная десятичная точка.

                   strtod также распознает +INF и -INF как плюс и
                   минус бесконечность, и +NAN и -NAN как не число.

                   В качестве примера ниже приведены некоторые сим-
                   вольные строки, которые функция strtod может кон-
                   вертировать в число двойной точности:

                   +1231.1981 е-1
                    502.85Е2
                   -2010.952

                   strtod прекращает чтение строки на первом встре-
                   тившемся символе, который не может быть интерпре-
                   тирован, как соответствующая часть числа двойной
                   точности.

                   Если параметр endptr не NULL, функция strtod
                   присваивает endptr указатель на символ, который
                   остановил считывание (*endvar = &stopper). Этот
                   параметр используется для обнаружения ошибок.

Возвращаемое       strtod возвращает значение s как число
значение           двойной точности. В случае переполнения она возв-
                   ращает положительное или отрицательное значение
                   HUGE_VAL.

Переносимость      strtod поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Смотрите также      atof

Пример:

#include
#include

int main(void)
{
   char input[80],*endptr;
   double value;
   printf("Введите число с плавающей точкой: ");
   gets(input);
   value = strtod(input,&endptr);
   printf("Строка: %s, число: %lf\n",input,value);
   return 0;


cpp

strtok
Функция            Просматривает одну строку на лексемы, которые
                   выделены ограничителями, определенными во второй
                   строке;

Синтаксис          #include
                   char * strtok(char *s1, const char *s2);

Файл, содержащий   string.h
прототип

Описание           strtok рассматривает строку s1, как состоящую из
                   последовательности из нуля или более лексем, вы-
                   деленных с помощью символов из строки str2.

                   Первый вызов функции strtok возвращает указатель
                   на первый символ первой лексемы в строке s1 и за-
                   писывает нелевой символ в строку s1 непосредст-
                   венно сразу за выделенной лексемой. Последующие
                   вызовы со значением NULL в качестве первого аргу-
                   мента будут обрабатывать строку s1 таким же обра-
                   зом, пока не кончатся все лексемы.

                   Строка-разделитель s2 от вызова к вызову может
                   меняться.

Возвращаемое       strtok возвращает указатель на лексему, находящую-
значение           ся в s1. Когда закончатся все лексемы, содержащи-
                   еся в строке s1, функция strtok возвратит нулевой
                   указатель (NULL).

Переносимость      strtok поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Пример:

#include
#include

int main(void)
{
   char input[16] = "abc,d;
   char *p;
   /* strtok помещает нулевое окончание после лексемы */
   p = strtok(input,",");
   if(p) printf("%s\n",p);
   /* второй вызов возвращает вторую лексему */
   p = strtok(NULL,",");
   if(p) printf("%s\n",p);
   return 0;


cpp

strtol
Функция            Преобразует строку в длинное целое значение.

Синтаксис          #include
                   long strtol(const char *s, char **endptr,
                                                       int radix);

Файл, содержащий   stdlib.h
прототип

Описание           strtol преобразует символьную строку s к длино-
                   му целому значению. Аргумент s - это последова-
                   тельность символов, которые могут быть интерпре-
                   тированы, как длинное целое; они должны соответс-
                   твовать следующему формату:

                           [ws] [sn] [0] [x] [ddd] , где

                           [ws] - необязательный незначащий символ;
                           [sn] - необязательный знак (+ или -);
                           [0]  - необязательный нуль (0);
                           [x]  - необязательный x или X.
                           [ddd]- необязательные цифры.

                   strtol прекращает чтение строки на первом симво-
                   ле, который нераспознан.

                   Если параметр radix лежит в пределах между 2 и
                   36, длинное целое число выражается по основанию
                   radix. Если radix равно 0, первые несколько сим-
                   волов строки s определяют основание преобразуемо-
                   го значения.

                   Первый    Второй   Строка интепретируется, как
                   символ    символ
                     0         1-7       восьмеричное
                     0        x или X    шестнадцатеричное
                    1-9       ----       десятичное

                   Если radix = 1, это будет считаться неверным зна-
                   чением. Если radix<0, это также будет считаться
                   неверным значением. Если radix>36, это будет не-
                   верным значением. Любое неверное значение для
                   radix устанавливает результат в 0 и присваивает
                   указателю на следующий символ *endptr - указатель
                   на начало строки. Если подразумевается, что зна-
                   чение s будет интерпретироваться, как восьмирич-
                   ное, любой символ, кроме цифр от 0 до 7, не будет
                   распознаваться. Если подразумевается, что значе-
                   ние s будет интерпретироваться, как десятичное,
                   любой символ, кроме цифр от 0 до 9, не будет рас-
                   познаваться. Если значение s будет интерпретиро-
                   ваться, как число по любому другому основанию,
                   будут распознаваться только те цифры и буквы, ко-
                   торые имеются в числах по данному основанию.
                   (Например, если radix = 5, будут распознаваться
                   только цифры от 0 до 4; если radix = 20, будут
                   распознаваться цифры от 0 до 9 и буквы от А до
                   J). Если endptr не ноль, strol устанавливает
                   *endptr в указатель на символ, который завершает
                   сканирование (*endptr = &stopper).

Возвращаемое       strtol возвращает значение преобразованной строки
значение           или 0 в случае ошибки.

Переносимость      strtol поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Смотри также        atof atol strtoul
Пример:

#include
#include

int main(void)
{
   char *string = "87654321", *endptr;
   long lnumber;
   /* strtol преобразует строку к длинному целому */
   lnumber = strtol(string,&endptr,10);
   printf("Строка: %s, число: %ld\n",string,lnumber);
   return 0;


cpp

strupr
Функция            Преобразует буквы нижнего регистра строки в буквы
                   верхнего регистра.

Синтаксис          #include
                   char *strupr(char *s);

Файл, содержащий   string.h
прототип

Описание           strupr преобразует буквы нижнего регистра в стро-
                   ке s в буквы верхнего регистра. Других изменений
                   не происходит.

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

Переносимость      strupr уникальна для DOS.

Смотрите также      strlwr

Пример:

#include
#include

int main(void)
{
   char *string = "abcdefghijklmnopqrstuvwxyz",*ptr;
   /* преобразовать в символы верхнего регистра */
   ptr = strupr(string);
   printf("%s\n",ptr);
   return 0;


cpp

strxfrm
Функция            Копирует часть строки.

Синтаксис          #include
                   size_t strxfrm(char *s1,char *s2,size_t n);

Файл, содержащий   string.h
прототип

Описание           strxfrm копирует не больше n символов из строки
                   s2 в строку s1.

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

Смотрите также      strcoll strncpy

Пример:

#include
#include
#include

int main(void)
{
   char *target;
   char *source = "Frank Borland";
   int length;
   /* выделить место для строки */
   target = calloc(80,sizeof(char));
   /* скопировать в нее строку и получить ее длину */
   length = strxfrm(target,source,80);
   printf("%s длиной %d байт\n",target,length);
   return 0;


cpp

swab
Функция            Функция swab осуществляет обмен байтами.

Синтаксис          #include
                   void swab(char *from, char *to, int nbytes);

Файл, содержащий   stdlib.h
прототип

Описание           Функция swab копирует nbytes байтов из строки
                   from в строку to. Соответствующие четные и нечет-
                   ные байты меняются местами. Эта операция бывает
                   полезна для передачи данных из одной машины к
                   другой с различным порядком байтов. Число nbytes
                   должно быть четным.

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

Переносимость      swab поддерживается на системах UNIX.

Пример:

#include
#include

char source[15] = "rFna koBlrna d";
char target[15];

int main(void)
{
   swab(source,target,strlen(source));
   printf("Результат: %s\n",target);
   return 0;


cpp

system
Функция            Функция system запускает команду DOS.

Синтаксис          #include
                   int system(const char *command);

Файл, содержащий   stdlib.h, process.h
прототип

Описание           Функция system вызывает файл DOS COMMAND.COM для
                   выполнения команды DOS, командного файла или дру-
                   гих программ вызываемах строкой command из выпол-
                   няемой С программы.

                   Для поиска и выполнения программа обязательно
                   должна находится в рабочей директории или в одной
                   из директорий перечисленных в строке PATH.

                   Для поиска файла COMMAND.COM используется пере-
                   менная среды COMSPEC, так что не требуется, чтобы
                   файл COMMAND.COM обязательно находится в рабочей
                   директории.

Возвращаемое       Функция system возвращает 0 в случае успеха и -1
значение           в случае ошибки.

Переносимость      system поддерживается на системах UNIX и совме-
                   стимых с ANSI C. Определена Керниганом и Ритчи.

Смотрите также      Функции exec..,_fprestsearchpath spawn.. .

Пример:

#include
#include

int main(void)
{
   printf("Запуск команды DOS.\n");
   system("dir");
   return 0;


cpp

tan
Функция            Вычисляет тангенс угла.

Синтаксис          Вещественная версия     Комплексная версия
                   #include        #include
                   double tan(double x);   complex tan(complex x);

Файл, содержащий   Вещественная версия     Комплексная версия
прототип           math.h                  complex.h

Описание           tan вычисляет тангенс. Углы определяются в радиа-
                   нах.

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

                   Коплексный тангенс определен следующим образом:

                     tan(z)=sin(z)/cos(z)

Возвращаемое       Функция tan возвращает тангенс x, sin(x)/cos(x).

Переносимость      tan поддерживается в системах UNIX и определена в
                   ANSI C. Комплексная версия требует С++ и  непере-
                   носима.

Смотрите также      acos asin atan atan, complex cos sin

Пример:

#include
#include
int main(void)
{
   double result;
   double x = 0.5;
   result = tan(x);
   printf("Тангенс от %1f равен %1f\n",x,result);
   return 0;


cpp

tanh
Функция            Вычисляет гиперболический тангенс.

Синтаксис          Вещественная версия     Комплексная версия
                   #include        #include
                   double tanh(double x);  complex tanh(complex x);

Файл, содержащий   Вещественная версия     Комплексная версия
прототип           math.h                  complex.h

Описание           tanh вычисляет гиперболический тангенс
                   sinh(x)/cos(h).

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

                   Коплексный гиперболический  тангенс  определяется
                   следующим образом:

                       tanh(z)=sibh(z)/cosh(z)

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

Переносимость      tanh поддерживается в системах UNIX и определена в
                   ANSI  C. Комплексная версия требует С++ и непере-
                   носима.

Смотрите также      complex cos cosh sinh tan

Пример:

#include
#include
int main(void)
{
   double result;
   double x = 0.5;
   result = tanh(x);
   printf("Гиперболический тангенс от %1f равен %1f\n",x,result);
   return 0;


cpp

tell
Функция            Получает текущую позицию указателя файла.

Синтаксис          #include
                   long tell(int handle);

Файл, содержаший   io.h
прототип

Описание           tell получает текущую позицию указателя фай-
                   ла, связанного с handle и выражает его ввиде чис-
                   ла байт от начала файла.

Возвращаемое       tell возвращает текущую позицию указателя
значение           файла. Возвращение -1(long) сообщает об ошибке
                   и errno устанавливается в

                    EBADR - Ошибочный номер файла.

Переносимость      Поддерживается на системах UNIX.

Смотрите также      fgetpos fseek ftell lseek

Пример:

#include
#include
#include
#include

int main(void)
{
   int handle;
   char msg[] = "Hello world";
   if((handle = open("TEST.$$$",O_CREAT|O_TEXT|O_APPEND)) == -1)
   {
      perror("Ошибка:");
      exit(1);
   }
   write(handle,msg,strlen(msg));
   printf("Указатель файла находится на %ld байте\n",tell(handle));
   close(handle);
   return 0;


cpp

textattr
Функция            Устанавливает текстовые атрибуты.

Синтаксис          #include
                   void textattr(int newattr);

Файл, содержаший   conio.h
прототип

Описание           textattr позволяет устанавливать цвет фона и
                   цвет символов одновременно за один вызов. (Обычно
                   вы устанавливаете аттрибуты с помощью textcolor и
                   textbackground).

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

                   Информация цвета кодируется в параметре newattr
                   следующим образом:

                     7    6    5    4  |  3    2    1    0
                   -----------------------------------------
                   | B |  b |  b |  b  |  f |  f |  f |  f |
                   -----------------------------------------
                                       |

                   В этом 8-битном параметре newaddr
                      ffff  - 4-битный цвет символов (1 - 15)
                      bbb   - 3-битный цвет фона (1 - 7)
                      B     - бит мигания

                   Если бит мигания включен, то символ будет мигать.
                   Это можно осуществить путем добавления константы
                   BLINK в аттрибут. Если вы используете символьные
                   цветовые константы, определенные в conio.h для
                   создания текстовых аттрибутов с помощью textattr,
                   запомните следующие ограничения на цвет фона: 1)
                   Вы можете выбрать только первые 8 цветов для
                      фона;

                   2) Вы должны сдвинуть выбранный цвет фона вле-
                      во на 4 бита для перемещения его в правильную
                      битовую позицию.

                   Символьные константы в таблице:
              ---------------------------------------------------
              Константа          Числ.знач.       Для символов
                                                  или  фона?
              ---------------------------------------------------
              BLACK                 0             оба
              BLUE                  1             оба
              GREEN                 2             оба
              CYAN                  3             оба
              RED                   4             оба
              MAGENTA               5             оба
              BROWN                 6             оба
              LIGHTGRAY             7             оба
              DARKGRAY              8             для символов
              LIGHTBLUE             9             для символов
              LIGHTGREEN           10             для символов
              LIGHTCYAN            11             для символов
              LIGHTRED             12             для символов
              LIGHTMAGENTA         13             для символов
              YELLOW               14             для символов
              WHITE                15             для символов
              BLINK               128             для символов
              ---------------------------------------------------

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

Переносимость      textattr работает только на IBM PC и совмес-
                   тимых системах.

Смотрите также      gettextinfo highvideo lowvideo normvideo
                    textbackground textcolor
Пример:

#include

int main(void)
{
   int i;
   clrscr();
   for(i=0;i<9;i++)
   {
      textattr(i+((i+1)<<4));
      printf("Это тест\r\n");
   }
   return 0;


cpp

textbackground
Функция            Выбирает новый цвет фона для текста.

Синтаксис          #include
                   void textbackground(int newcolor);

Файл, содержаший   conio.h
прототип

Описание           textbackground выбирает цвет фона в тексто-
                   вом режиме. Эта функция работает только для
                   функций, осуществляющим примой вывод на экран в
                   текстовом режиме. newcolor определяет новый цвет
                   фона. Вы можете определить его как целое (от 0 до
                   7) или как одну из символических констант,
                   определенных в файле conio.h. При использовании
                   символьных констант необходио включить файл
                   conio.h.

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

                   Символьные константы в таблице:
                   ----------------------------------
                   Константа          Числ.знач.
                   ----------------------------------
                   BLACK                 0
                   BLUE                  1
                   GREEN                 2
                   CYAN                  3
                   RED                   4
                   MAGENTA               5
                   BROWN                 6
                   LIGHTGRAY             7
                   -----------------------------------

Переносимость      textbackground работает только с IBM PC и сов-
                   местимыми. Соответствующая функция существует в
                   Turbo Pascal.

Смотрите также      gettextinfo textattr textcolor

Пример:

#include

int main(void)
{
   int i,j;
   clrscr();
   for(i=0;i<9;i++)
   {
      for(j=0;j<80;j++);
         cprintf("C");
      cprintf("\r\n");
      textcolor(i+1);
      textbackground(i);
   }
   return 0;


cpp

textcolor
Функция            Устанавливает цвет символов в текстовом режиме.

Синтаксис          #include
                   void textcolor(int newcolor);

Файл, содержаший   conio.h
прототип

Описание           textcolor выбирает цвет символа. Эта функция ока-
                   зывает влияние на функции, производящие прямой
                   вывод на экран в текстовом режиме. Вы можете
                   выбрать цвет, используя символьную константу,
                   определенную в conio.h. Если вы используете эту
                   константу, вы должны включить файл conio.h.

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

                   Следующая таблица отображает возможные цвета (как
                   символьные константы ) и их числовые значения.
                   ----------------------------------
                   Константа          Числ.знач.
                   ----------------------------------
                   BLACK                 0
                   BLUE                  1
                   GREEN                 2
                   CYAN                  3
                   RED                   4
                   MAGENTA               5
                   BROWN                 6
                   LIGHTGRAY             7
                   DARKGRAY              8
                   LIGHTBLUE             9
                   LIGHTGREEN           10
                   LIGHTCYAN            11
                   LIGHTRED             12
                   LIGHTMAGENTA         13
                   YELLOW               14
                   WHITE                15
                   BLINK               128
                   -------------------------------------

                   Вы можете сделать символы мигающими, добавляя
                   BLINK к цвету символов. Встроенная константа
                   BLINK предназначена для этой цели. Например:

                   textcolor(CYAN+BLINK);

                   Замечание. Некоторые мониторы не узнают
                   интенсивность сигнала, используемую для создания
                   восьми "light"(светлый) цветов (8-15). В таких
                   мониторах светлые цвета будут изображаться как их
                   " темные" эквиваленты (0-7). Анологично, системы,
                   которые не отображают цвет используют эти номера
                   как оттенки одного цвета, особые образцы или
                   особые атрибуты.(такие как подчеркивание,
                   полужирный шрифт, курсив и т.п. ). То, что вы
                   увидите при этом на экране, зависит от
                   оборудования.

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

Переносимость      textcolor  работает только с IBM PC и сов-
                   местимых. Соответствующая функция существует в
                   Turbo Pascal.

Смотрите также      gettextinfo textattr highvideo lowvideo
                    normvideotextbackground

Пример:

#include

int main(void)
{
   int i;
   for(i=0;i<15;i++)
   {
      textcolor(i);
      cprintf("Цвет символов.\r\n");
   }
   return 0;


cpp

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

Синтаксис          #include
                   int far textheight(char far *textstring);

Файл, содержащий   graphics.h
прототип

Описание           Графическая функция textheight, берет теку-
                   щий размер шрифта и фактор увеличения и
                   определяет высоту textstring в пикселе. Эта
                   функция используется для установления расстояний
                   между строками, вычисления высоты окна,
                   определения размера заголовка для того, чтобы он
                   помещался в диаграмму или блок-схему, и т.д.
                   Например, используя шрифт, матрица которого 8 х 8
                   бит, и фактор увеличения равный 1 ( установленные
                   с помощью settextstyle), строка Turbo C++ будет
                   высотой в 8 пикселов. Лучше использовать
                   textheight для вычисления высоты строк, чем это
                   делать вручную. При использовании этой функции
                   нет необходимости выполнять модификацию кода
                   источника при выборе различных шрифтов.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с
                   ними, оснащенных дисплейными адаптерами,
                   поддерживающими графический режим.

Смотрите также      gettextsettings outtext outtextxy
                    setteststyle textwidth

Пример:

#include
#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int y=0,i;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* вывести тектс на экран */
for(i=0; i<11; i++)
{
   /* выбрать тип шрифта, направление, размер */
   settextstyle(TRIPLEX_FONT,HORIZ_DIR,i);
   /* создать строку сообщения */
   sprintf(msg,"Size: %d",i);
   /* вывести сообщение */
   outtextxy(1,y,msg);
   /* перейти на следующую строку */
   y += textheight(msg);
}
/* очистка */
getch();
closegraph();
return 0;


cpp

textmode
Функция            Переводит экран в текстовый режим.

Синтаксис          #include
                   void textmode(int newmode)

Файл, содержаший   conio.h
прототип

Описание           textmode выбирает указанный текстовый режим.
                   Вы можете задать текстовый режим (аргумент
                   newmode), используя символьную константу
                   перечисляемого типа text_modes (определенную в
                   conio.h). Если вы используете эту константу, вы
                   должны включить conio.h.

                   Константы типа text_modes, их числовые значения и
                   режимы, корорые они определяют задаются в
                   следующей таблице:
                   __________________________________________________
                   Символьная   Числовое        Текстовый
                   константа    значение        режим
                   ___________________________________________________
                   LASTMODE       -1            предыдущий текстовый
                                                режим
                   BW40            0            черный и белый, 40
                                                колонок
                   C40             1            цветной, 40 колонок
                   BW80            2            черный и белый,
                                                80 колонок
                   C80             3            цветной, 80 колонок
                   MONO            7            монохромный, 80 ко-
                                                лонок
                   C4350          64            EGA 43 строки и
                   ___________________________________________________

                   Когда вызывается textmode, текущее окно
                   переустанавливается в полный экран и текущие
                   текстовые атрибуты переустанавливаются в
                   нормальные, соответствующие вызову normvideo.

                   Определeние LASTMODE для textmode вызывает
                   повторный выбор последнего текстового режима.
                   textmode следует использовать только тогда, когда
                   вы работаете в текстовом режиме (вероятно для
                   перевода в другой текстовый режим). Только в этом
                   контексте следует использовать textmode. Когда
                   экран в графическом режиме, вам следует
                   использовать restorecrtmode вместо временного
                   выхода в текстовый режим.

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

Переносимость      textcolor  работает только с IBM PC и сов-
                   местимых. Соответствующая функция существует в
                   Turbo Pascal.

Смотрите также      gettextinfo window

Пример:

#include

int main(void)
{
   textmode(BW40);
   cprintf("ABC");
   getch();
   textmode(C40);
   cprintf("ABC");
   getch();
   textmode(BW80);
   cprintf("ABC");
   getch();
   textmode(C40);
   cprintf("ABC");
   getch();
   textmode(MONO);
   cprintf("ABC");
   getch();
   return 0;


cpp

textwidth
Функция            Возращает ширину строки в пикселях.

Синтаксис          #include
                   int far textwidth(char far *textstring);

Файл, содержащий   graphics.h
прототип

Описание           Графическая функция textwidth берет длину
                   строки, текущий размер шрифта и фактор увеличения
                   и определяет ширину textstring в пикселях.

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

                   Лучше использовать textwidht для вычисления
                   ширины строк, чем это делать вручную. При
                   использовании этой функции нет необходимости
                   выполнять модификацию кода при выборе различных
                   шрифтов.

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

Переносимость      Функция уникальна для Turbo C++. Она работает
                   только на компьютерах IBM PC и совместимых с
                   ними, оснащенных дисплейными адаптерами,
                   поддерживающими графический режим.

Смотрите также      gettextsettings outtext outtextxy
                    setteststyle textheight

Пример:

#include
#include
#include
#include
#include

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x=0,y=0,i;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
y = getmaxy()/2;
settextjustify(LEFT_TEXT,CENTER_TEXT);
/* вывести текcт на экран */
for(i=0; i<11; i++)
{
   /* выбрать тип шрифта, направление, размер */
   settextstyle(TRIPLEX_FONT,HORIZ_DIR,i);
   /* создать строку сообщения */

   sprintf(msg,"Size: %d",i);
   /* вывести сообщение */
   outtextxy(1,y,msg);
   /* перейти на следующую строку */
   x += textwigth(msg);
}
/* очистка */
getch();
closegraph();
return 0;


cpp

time
Функция            Получает текущее время дня.

Синтаксис          #include
                   time_t time (time_t *timer);

Файл, содержащий   time.h
прототип

Описание           Функция time выдает текущее время в секундах,
                   прошедшее с времени 00:00:00 GMT, 1 января, 1970,
                   по Гринвичу и сохраняет это значение по адресу,
                   на который указывает timer, при условии что timer
                   есть ненулевой указатель.

Возвращаемое       Функция time возвращает время в секундах, как опи-
значение           сано выше.

Переносимость      Поддерживается на системах UNIX и совместима с
                   ANSI.C.

Смотрите также      asctime ctime difftime ftime gettime
                    gmtime locatime settime stime tzset

Пример:

#include
#include
#include

int main(void)
{
   tome_t t;
   t = time(NULL);
   printf("С 1 января 1970 г. прошло %ld секунд\n",t);
   return 0;


cpp

timezone
Функция            Содержит разницу в секундах между местным временем
                   и GMT (среднее время по Гринвичу).

Синтаксис          extern long timezone;

Объявлено в        time.h

Описание           timezone используется функциями времени и даты.
                   Эта переменная вычисляется при помощи функции
                   tzset; ей присваивается значение типа long, кото-
                   рое является разницей (в секундах) между текущим
                   местным временем и средним временем по Гринвичу.


cpp

tmpfile
Функция            Открывает временный файл в двоичном режиме.

Синтаксис          #include
                   FILE *tmpfile(void);

Файл, содержаший   stdio.h
прототип

Описание           tmpfile создает временный двоичный файл и откры-
                   вает его для модификации (w+b). Файл
                   автоматически уничтожается, при его закрытии или
                   завершении программы.

Возвращаемое       tmpfile возвращает указатель на поток временно со-
значение           зданного файла. Если файл не может быть создан,
                   tempfile возвращает null.

Переносимость      tmpfille поддерживается на системах UNIX и совме-
                   стима с ANSI C.

Пример:

#include
#include

int main(void)
{
   FILE *tempfp;
   tempfp = tmpfile();
   if(tempfp)
      printf("Создан временный файл\n");
   else
   {
      printf("Не могу создать временный файл\n");
      exit(1);
   }
   return 0;


cpp

tmpnam
Функция            Создает уникальное имя файла.

Синтаксис          #include
                   char *tmpnam(char *s);

Файл, содержащий   stdio.h
прототип

Описание           tmpnam создает уникальное имя файла, которое
                   может быть успешно использовано как имя
                   временного файла. tmpnam генерирует различные
                   строки каждый раз, когда вы ее вызываете, до
                   TMP_MAX раз. TMP_MAX определяется в stdio.h как
                   65535. Параметр s для tmpnam либо 0, либо
                   указатель на массив, состоящий по крайней мере из
                   L_tmpnam символов. L_tmpnam определено в stdio.h.
                   Если s ноль, tmpnam оставляет имя
                   сгенерированного временного файла во внутреннем
                   статическом объекте и возвращает указатель на
                   этот объект. Если s не ноль, tmpnam помещает свой
                   результат в указанный массив, который должен быть
                   длиной по крайней мере L_tmpnam символов, и
                   возвращает s.

                   Замечание. Если вы создаете такой временный файл
                   с помощью tmpnam, то вы сами отвечаете за
                   уничтожение имени файла (например, с помощью
                   вызова remove). Он не уничтожается автоматически.

Возвращаемое       Если s ноль, то tmpnam возвращает указатель на
значение           внутренний статический объект. В противном слу-
                   чае tmpnam возвращает s.

Переносимость      tmpnam поддерживается на системах UNIX и совмес-
                   тимых с ANSI.C.

Смотрите также      tmpfile

Пример:

#include

int main(void)
{
   char name[13];
   tmpnam(name);
   printf("Имя временного файла: %s\n",name);
   return 0;


cpp

toascii
Функция            Переводит символы в формат ASCII.

Синтаксис          #include
                   int toascii(int c);

Файл, содержащий   ctype.h
прототип

Описание           toascii - это макрокоманда, которая конвертирует
                   целое c в код ASCII, очищая все кроме младших
                   семи битов; при этом получаемые значения
                   находятся в пределах от 0 до 127.

Возвращаемое       toascii возвращает конвертированное значение c.
значение

Переносимость      toascii поддерживается на системах UNIX;

Пример:

#include
#include

int main(void)
{
   int number,result;
   number = 511;
   result = toascii(number);
   printf("%d %d\n",numder,result);
   return 0;


cpp

tolower
Функция            Переводит символы в символы нижнего регистра.

Синтаксис          #include
                   int tolower(int ch);

Файл, содержаший   ctipe.h
прототип

Описание           tolower - это функция, которая переводит целое ch
                   (в пределах EOF до 255) в его значение для нижне-
                   го регистра (a-z) (если были символы верхнего ре-
                   гистра (A-Z)); Все другие остаются без изменения.

Возвращаемое       tolower возвращает преобразованное значение ch,
значение           если это символ верхнего регистра; Все другие
                   возвращаются без изменений.

Переносимость      tolower поддерживается на системах UNIX и совме-
                   стимых с ANSI C. Определена Керниганом и Ритчи.

Пример:

#include
#include
#include

int main(void)
{
   int length,i;
   char *string = "THIS IS A STRING.";
   length = strlen(string);
   for(i=0;i


cpp

toupper
Функция            Транслирует символы в верхний регистр.

Синтаксис          #include
                   int toupper(int ch);

Файл, содержащий   ctype.h
прототип

Описание           toupper - функция, преобразующая целое ch (в
                   пределах от EOF до 255) в значение верхнего ре-
                   гистра (A-Z) (если до этого был нижний ре-
                   гистр(a-z)), остальные остаются без изменений.

Переносимость      toupper поддерживается на системах UNIX и совме-
                   стимых с ANSI C. Определена Керниганом и Ритчи.

Пример:

#include
#include
#include

int main(void)
{
   int length,i;
   char *string = "this is a string.";
   length = strlen(string);
   for(i=0;i


cpp

tzname
Функция            Массив указателей на имена временных зон.

Синтаксис          extern char * tzname[2];

Объявлено в        time.h

Описание           Глобальная переменная tzname является массивом
                   указателей на строки, содержащие аббревиатуры для
                   имен временных зон. tzname[0] указывает на строку
                   из трех символов со значением имени временной зо-
                   ны из строки окружения TZ. Глобальная переменная
                   tzname[1] указывает на строку из трех символов со
                   значением летнего времени для имени временной зо-
                   ны из строки окружения TZ. Если это имя отсутст-
                   вует, то tzname[1] указывает на нулевую строку.


cpp

tzset
Функция            Устанавливает значения глобальных переменных
                   daylight, timezone, tzname.

Синтаксис          #include
                   void tzset(void);

Файл, содержащий   time.h
прототип

Описание           tzset  устанавливает глобальные переменные
                   daylight, timezone, tzname, основаваясь на пере-
                   менной окружения TZ. Функции библтотеки ftime и
                   localtime используют эти глобальные переменные
                   для корректировки среднего времени по гринвичес-
                   кому мередиану (GMT) с локальным временем зоны.
                   Формат строки TZ следующий: TZ = zzz[+/-][d][lll]
                   трехсимвольная строка представляющая имя текущей
                   временной зоны. Все три символа необходимы. Нап-
                   ример, строка "PST" может быть использована для
                   обозначения тихоокеанского поясного времени.
                   [+/-]d[d] - это поле содержащее число из одной
                   или более цифр со знаком. Это число показывает
                   разницу в часах между GMT и локальным временным
                   поясом. Положительные числа соответствуют поясам
                   к западу от GMT, отрицательные к востоку от GMT.
                   Например, 5= EST, +8 = PST и -1 = континентальная
                   Европа. Это число используется при вычислении
                   глобальной переменной timezone. timezone - это
                   разница в секундах между GMT и локальным време-
                   нем.

                   lll - это необязательное трехсимвольное поле для
                   обозначения временных зон, использующих летнее
                   время. Например, PDT - представляет тихоакеанское
                   поясное летнее время. Если это поле присутствует,
                   то глобальная переменная daylight принимает нену-
                   левое значение. Если же это поле отсутствует,
                   daylight будет установлено в 0.

                   Если строка TZ не присутствует или не совпадает с
                   выше описанной формой, то используется по умолча-
                   нию TZ = "EST5EDT" для присвоения значений гло-
                   бальным переменнным daylight, timezone, tzname.

                   Глобальная переменная tzname[0] указывает на
                   трехсимвольную строку, содержащую значение имени
                   временной зоны из строки TZ.

                   Глобальная переменная tzname[1] указывает на
                   трехсимвольную строку, содержащую имя временной
                   зоны летнего времени из строки TZ. Если имя лет-
                   него времени нет tzname1 указывает на нулевую
                   строку.

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

Переносимость      tzset доступна в системах UNIX и XENIX.

Смотрите также      asctime ctime ftime gmtime localtime stime
                    time

Пример:

#include
#include
#include

int main(void)
{
   time_t td;
   putenv("TZ=PST8PDT")
   tzset();
   time(&td);
   printf("Текущее время = %s\n",asctime(localtime(&td)));
   return 0;


cpp

ultoa
Функция            Преобразует длинное целое без знака в строку.

Синтаксис          #include
                   char *ultoa(unsigned long value, char *string,
                   int radix);

Файл, содержащий   stdlib.h
прототип

Описание           utoa преобразует value в строку, заканчиваю-
                   щуюсю нулевым символом и помещает результат в
                   string. value имеет тип unsigned long.

                   radix определяет основание, которое будет исполь-
                   зовано в конвертируемом значении; оно должно быть
                   заключено между 2 и 36.ultoa не обеспечивает про-
                   верку переполнения и если значение отрицательно и
                   radix равно 10, это не устанавливает отрицатель-
                   ный знак.

                   Замечание. Память, занимаемая строкой должна быть
                   достаточно большой, чтобы вместить возвращаемую
                   строку, включая символ терминального нуля(\0). utoa
                   может возвращать до 33 байт.

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

Смотрите также      itoa ltoa

Пример:

#include
#include

int main(void)
{
   unsigned long lnumber = 3123456789L;
   char string[25];
   ultoa(lnumber,string,10);
   printf("строка = %s, unsigned long = %lu\n",string,lnumber);
   return 0;


cpp

ungetc
Функция            Помещает символы обратно во входной поток.

Синтаксис          #include
                   int ungetc(char c, FILE *stream);

Файл, содержащий   stdio.h
прототип

Описание           ungetc продвигает символ c обратно в указанный
                   входной поток stream, который должен быть открыт
                   для чтения. Этот символ может быть получен снова
                   с помощью последующего вызова функций getc или
                   fread для данного потока stream. Один символ мож-
                   но поместить обратно в любой ситуации. Второй вы-
                   зов функции ungetc без предварительного вызова
                   функции getc приведет к тому, что предыдущий сим-
                   вол будет потерян. Функции fflush,fseek, fsetpos
                   и rewind очищает все помещенные обратно в поток
                   символы.

Возвращаемое       При успешном выполнении, ungetc возвращает символ
значение           помещенный обратно в поток. Иначе он возвращает
                   EOF.

Переносимость      ungetc поддерживается в системах UNIX и сов-
                   местима с ANSI C.

Смотрите также      fgetc getc getchar

Пример:

#include
#include

int main(void)
{
   int i;
   char ch;
   puts("введите целое, а затем символ\n");
   /* считывать пока не встретится не цифра или EOF */
   while((ch=getch())!=EOF && isdigit(ch))
      i = 10 * i + ch - 48; /* преобразование в целое */
   /* если был считан симол, не являющийся цифрой, поместить ее
      обратно */
   if(ch != EOF)
      ungetc(ch,stdin);
   printf("i = %d, следующий символ в буфере: %c\n",getch());
   return 0;


cpp

ungetch
Функция            Помещает символы назад в буфер клавиатуры.

Синтаксис          #include
                   int ungetch(int ch);

Файл, содержащий   conio.h
прототип

Описание           ungetch помещает символ ch назад на консоль,
                   приводя к тому, что ch будет следующим вводимым
                   символом. ungetch не работает, если она вызывает-
                   ся больше одного раза перед следующим чтением.

Возвращаемое       ungetch  возвращает ch в случае успешного выпол-
значение           нения. Возвращаемое значение EOF указывает на
                   ошибку.

Смотрите также      getch getche

Пример:

#include
#include

int main(void)
{
   int i=0;
   char ch;
   puts("введите целое, а затем символ\n");
   /* считывать пока не встретится не цифра или EOF */
   while((ch=getch())!=EOF && isdigit(ch))
      i = 10 * i + ch - 48; /* преобразование в целое */
   /* если был считан симол, не являющийся цифрой, поместить ее
      обратно */
   if(ch != EOF)
      ungetch(ch);
   printf("i = %d, следующий символ в буфере: %c\n",getch());
   return 0;


cpp

unixtodos
Функция            Преобразует дату и время из формата UNIX в формат
                   DOS.

Синтаксис          #include
                   void unixtodos(long time, struct date *d,
                                  struct time *t);

Файл, содержащий   dos.h
прототип

Описание           unixtodos преобразует время time из UNIX-формата
                   в DOS-формат, и заполняет структуры date и time,
                   на которые указывают d и t.

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

Переносимость      unixtodos  уникальна для DOS.

Смотрите также      dostounix

Пример:

#include
#include

char *month[] = {"---","Jan","Feb","Mar","Apr","May","Jun",
                 "Jul","Aug","Sep","Oct","Nov",Dec"};

#define SECONDS_PER_DAY 86400L  /* секунд в сутках */

struct date d;
struct time t;

int main(void)
{
   unsigned long val;
   /* получить текущую дату и время */
   getdate(&d);
   gettime(&t);
   printf("Сегодня %d %s %d\n",dt.da_day,month[dt.da_mon],dt.da_year);
   /* преобразовать дату и время в формат UNIX (число секунд с
      1970 г. */
   val = dostounix(&d,&t);
   /* вычесть 42 дня */
   val -= (SECONDS_PER_DAY * 42);
   /* преобразовать обратнов формат DOS */
   unixtodos(val,&d,&t);
   printf("42 дня назад было  %d %s %d\n",
      dt.da_day,month[dt.da_mon],dt.da_year);
   return 0;


cpp

unlink
Функция            Удаляет файл.

Синтаксис          #include
                   int unlink(const char *filename);

Файл, содержащий   dos.h, io.h, stdio.h
прототип

Описание           Функция unlink удаляет файл с именем filename.
                   В имени filename могут присутствовать специфика-
                   ция дисковода, маршрут, собственно имя файла.
                   Знаки шаблона (*,?) не разрешены.

                   С помощью вызова данной функции не могут быть
                   удалены файлы с режимом доступа только чтение.
                   Чтобы удалить такие файлы сначала следует вызвать
                   функцию chmod (или _chmod) для изменения атрибута
                   доступа.

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

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

                   ENOENT - Маршрут или имя файла не найдены;
                   EACCES - Отказ доступа.

Переносимость      Функция поддерживается в системах UNIX.

Смотрите также      chmod remove

Пример:

#include
#include

int main(void)
{
   FILE *fp = fopen("Junk.jnk","w");
   int status;
   fprintf(fp,"Junk");
   status = access("junk.jnk",0);
   if(status == 0)
      printf("Файл существует.\n);
   else
      printf("Файл не существует.\n);
   fclose(fp);
   unlink("junk.jnk");
   status = access("junk.jnk",0);
   if(status == 0)
      printf("Файл существует.\n);
   else
      printf("Файл не существует.\n);
   return 0;


cpp

unlock
Функция            Разблокирует доступ к части файла.

Синтаксис          #include
                   int unlock(int handle, long offset, long length);

Файл, содержащий   dos.h
прототип

Описание           unlock обеспечивает интерфейс к механизму разде-
                   ления файлов в DOS 3.x.

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

Возвращаемое       unlock возвращает 0 в случае успеха и -1 в случае
значение           ошибки.

Переносимость      unlock уникальна для DOS 3.x. Более старые версии
                   не поддерживают этот вызов.

Пример:

#include
#include
#include
#include
#include
#include

int main(void)
{
    int handle,status;
    long length;
    handle = sopen("c:\\autoexec.bat",
         O_RDONLY, SH_DENYNO, S_IREAD);
    if(!handle)
    {
        printf("Ошибка при операции sopen");
        exit(1);
    }
    length = filelength(handle);
    status = lock(handle,0L,length/2);
    if(status == 0)
        printf("Успешная операция блокировки");
    else
        printf("Ошибка при операции блокировки");
    status = unlock(handle,0L,length/2);
    if(status == 0)
        printf("Успешная операция разблокировки");
    else
        printf("Ошибка при операции разблокировки");
    close(handle);
    return 0;


cpp

va_arg, va_end, va_start
Функция            Создают список аргументов.

Синтаксис          #include
                   void va_start(va_list param, lastfix);
                   type va_arg(va_list param, type);
                   void va_end(va_list param);

Файл, содержащий   stdarg.h
прототип

Описание           Некоторые СИ-функции, такие как vfprintf и
                   vprintf, принимают переменный список аргументов,
                   в отличие от функций, имеющих фиксированное число
                   аргументов. Макрокоманды семейства va_... обеспе-
                   чивают простой путь доступа к данным спискам ар-
                   гументов. Они используются для перебора аргумен-
                   тов в том случае, когда вызываемая функция не со-
                   общает номер и тип передаваемого аргумента. В за-
                   головочном файле stdarg.h объявлен один тип пере-
                   менного списка аргументов (va_list), и три макро-
                   команды (va_start, va_arg, va_end).

                             Список va_list.

                   Данный массив содержит информацию, требуемую
                   va_arg и va_end. При вызове функции с переменным
                   списком аргументов, объявляется переменная param
                   с типом va_list.

                   va_start
                   Данная подпрограмма (применяемая как макрокоман-
                   да) устанавливает аргумент param в качестве ука-
                   зателя на первый аргумент, передаваемый функции.
                   Заметим, что va_start должна вызываться перед
                   va_arg или va_end. Функция va_start использует
                   два аргумента: param и lastfix (смысл аргумента
                   param объяснен выше в абзаце, посвященном
                   va_list); lastfix - это имя последнего фиксиро-
                   ванного параметра, передаваемого вызванной функ-
                   ции.

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

                   По умолчанию вы можете использовать с va_arg
                   char, unsigned char или float.

                   Когда va_arg используется первый раз, она возвра-
                   щает первый в списке аргумент. При каждом после-
                   дующем использовании va_arg возвращает следующий
                   по порядку аргумент в списке. Это выполняется
                   посредством обращения к param, и затем присвоения
                   param адреса следующего аргумента. Для этого ис-
                   пользуется параметр type. Каждый успешный вызов
                   подпрограммы va_arg переадресовывает param на
                   следующий аргумент в списке.

                   va_end
                   Данная макрокоманда способствует нормальному воз-
                   врату вызываемой функции. Макрокоманда va_end мо-
                   жет модифицировать param таким образом, что он не
                   сможет быть использован до вызова va_start.
                   va_end должна быть вызвана после того, как функ-
                   ция va_arg прочтет все аргументы; попытка сделать
                   иначе вызовет непредсказуемое поведение вашей
                   программы.

Возвращаемое       Функции va_start и va_end не имеют возвращаемых
значение           значений; va_arg возвращает текущий аргумент в
                   списке (тот, который адресуется с помощью param).

Переносимость      va_arg, va_start, va_end поддерживается на сис-
                   темах UNIX.

Смотрите также      Функции v..scanf v.. printf

Пример:

#include
#include
/* вычисляет сумму, завершаемого 0 списка */
void sum(char *msg, ...)
{
   int total = 0;
   va_list ap;
   int arg;
   va_start(ap, msg);
   while ((arg = va_arg(ap,int)) != 0) {
        total += arg;
   }
   printf(msg, total);
}

int main(void)
{
      sum("Сумма 1+2+3+4 = %d\n", 1,2,3,4,0);
}

Результат программы

Сумма 1+2+3+4 = 10

Пример 2:

#include
#include

void error(char *format,...)
{
   va_list argptr;
   print("error: ");
   va_start(argptr, format);
   vprintf(format, argptr);
   va_end(argptr);
}

int main(void)
{
   int value = -1;
   error("this is just an error message\n");
   error("invalid value %d encountered\n", value);
}

Результат программы:

error: this is just an error message
error: invalid value -1 encountered


cpp

vfprintf
Функция            Направляет в поток отформатированный вывод.

Синтаксис          #include
                   int vfprintf(FILE *stream, char *format,
                                va_list arglist);

Файл, содержащий   stdio.h
прототип

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

                   vfprintf осуществляет доступ к указателю на серии
                   аргументов, применяет к каждому аргументу формат-
                   ную спецификацию, содержащуюся в строке формата,
                   на которую указывает format, и осуществляет вывод
                   отформатированных данных в поток. Число специфи-
                   каций формата должно быть равно числу аргументов.
                   Смотри в printf описание информации, включаемой в
                   спецификацию формата.

Возвращаемое       vfprintf возвращает число выведенных байтов. В
значение           случае ошибки vprintf возвращает EOF.

Переносимость      vfprintf поддерживается на UNIX System V, и сов-
                   местима с ANSI C.

Смотрите также      printf va_arg va_end va_start

Пример:

#include
#include

FILE *fp;

int vfpf(char *fmt, ...);
{
   va_list argptr;
   int cnt;
   va_start(argptr,format);
   cnt = vfprintf(fp,fmt,argptr);
   va_end(argptr);
   return cnt;
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90;
   char string[4] = "abc";
   fp = tmpfile();
   if(fp == NULL)
   {
      perror("Вызов tmpfile");
      exit(1);
   }
   vfpf("%d %f %s",inumber,fnumber,string);
   rewind(fp);
   fscanf("%d %f %s\n",&inumber,&fnumber,string);
   printf("%d %f %s",inumber,fnumber,string);
   fclose(fp);
   return 0;


cpp

vfscanf
Функция            Выполняет форматный ввод из потока.

Синтаксис          #include
                   int vfscanf(FILE *stream, const char *format,
                               va_list arglist);

Файл, содержащий   stdio.h
прототип

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

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

                   Смотри в scanf описание информации, включенной в
                   спецификацию формата.

                   vfscanf может закончить сканирование конкретного
                   поля, не достигнув нормального символа конца_поля
                   (пробел), или полностью прервать его по ряду при-
                   чин. Смотри в scanf описание различных случаев.

Возвращаемое       vfscanf возвращает число входных полей, которые
значение           были сосканированы, преобразованы и запомнены.
                   Возвращаемое значение не вкдлючает сканированные
                   поля, которые не были запомнены. Если не было
                   сохранено ни одно поле, то возвращаемое значение
                   - 0.

                   Если vfscanf пытается читать в конце_файла, то
                   возвращаемое значение EOF.

Переносимость      vfscanf поддерживается на UNIX System V.

Смотрите также      fscanf scanf va_arg va_end va_start

Пример:

#include
#include

FILE *fp;

int vfsf(char *fmt, ...);
{
   va_list argptr;
   int cnt;
   va_start(argptr,format);
   cnt = vfscanf(fp,fmt,argptr);
   va_end(argptr);
   return (cnt);
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90;
   char string[4] = "abc";
   fp = tmpfile();
   if(fp == NULL)
   {
      perror("Вызов tmpfile");
      exit(1);
   }
   fprintf(fp,"%d %f %s",inumber,fnumber,string);
   rewind(fp);
   vfsf("%d %f %s",&inumber,&fnumber,string);
   printf("%d %f %s",inumber,fnumber,string);
   fclose(fp);
   return 0;


cpp

vprintf
Функция            Посылает отформатированный вывод в стандартный по-
                   ток stdout.

Синтаксис          #include
                   int vprintf(const char *format, va_list arglist);

Файл, содержащий   stdio.h
прототип

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

                   vprintf осуществляет доступ к указателю на серии
                   аргументов, применяет к каждому аргументу формат-
                   ную спецификацию, содержащуюся в строке формата,
                   на которую указывает format, и осуществляет вывод
                   отформатированных данных в stdout. Число специфи-
                   каций формата должно быть равно числу аргументов.

                   Смотри в printf описание информации, включаемой в
                   спецификацию формата.

Возвращаемое       vprintf возвращает число выведенных байтов. В
значение           случае ошибки vprintf возвращает EOF.

Переносимость      vprintf поддерживается на UNIX System V, и сов-
                   местима с ANSI C.

Смотрите также      printf va_arg va_end va_start

Пример:

#include

int vpf(char *fmt, ...);
{
   va_list argptr;
   int cnt;
   va_start(argptr,format);
   cnt = vprintf(fmt,argptr);
   va_end(argptr);
   return(cnt);
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90;
   char *string = "abc";
   vpf("%d %f %s",inumber,fnumber,string);
   return 0;


cpp

vscanf
Функция            Выполняет форматный ввод из стандартного потока
                   stdin.

Синтаксис          #include
                   int vscanf(const char *format, va_list arglist);

Файл, содержащий   stdio.h
прототип

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

                   vscanf сканирует несколько полей ввода и читает
                   из stdin по одному символу в каждый момент време-
                   ни. Затем каждое поле форматируется в соответст-
                   вии с форматной спецификацией, передавемой в
                   vscanf в форматной строке, на которую указывает
                   format. И наконец, vscanf запоминает отформатиро-
                   ванный ввод по адресу, передаваемому ему в качес-
                   тве аргумента, следующего за format. Число специ-
                   фикаций формата и адресов должно быть равно числу
                   полей ввода.

                   Смотри в scanf описание информации, включенной в
                   спецификацию формата.

                   vscanf может закончить сканирование конкретного
                   поля, не достигнув нормального символа конца_поля
                   (пробел), или полностью прервать его по ряду при-
                   чин. Смотри в scanf описание различных случаев.

Возвращаемое       vscanf возвращает число входных полей, которые
значение           были сосканированы, преобразованы и запомнены.
                   Возвращаемое значение не включает сканированные
                   поля, которые не были запомнены. Если не было
                   сохранено ни одно поле, то возвращаемое значение
                   - 0.

                   Если vscanf пытается читать в конце_файла, то
                   возвращаемое значение EOF.

Переносимость      vscanf поддерживается на UNIX System V.

Смотрите также      fscanf scanf va_arg va_end va_start

Пример:

#include
#include

int vscnf(char *fmt, ...);
{
   va_list argptr;
   int cnt;
   printf("Введите целое, число с плавающей точкой, и строку: \n");
   va_start(argptr,format);
   cnt = vscanf(fmt,argptr);
   va_end(argptr);
   return(cnt);
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90;
   char *string = "abc";
   vscnf("%d %f %s",&inumber,&fnumber,string);
   printf("%d %f %s",inumber,fnumber,string);
   return 0;


cpp

vsprintf
Функция            Посылает отформатированный вывод в строку.

Синтаксис          #include
                   int vsprintf(char *string, const char *format,
                                va_list arglist);

ФАйл, содержащий   stdio.h
прототип

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

                   vsprintf осуществляет доступ к указателю на серии
                   аргументов, применяет к каждому аргументу формат-
                   ную спецификацию, содержащуюся в строке формата,
                   на которую указывает format, и осуществляет вывод
                   отформатированных данных в строку. Число специфи-
                   каций формата должно быть равно числу аргументов.

                   Смотри в printf описание информации, включаемой в
                   спецификацию формата.

Возвращаемое       vsprintf возвращает число выведенных байтов. В
значение           случае ошибки vsprintf возвращает EOF.

Переносимость      vsprintf поддерживается на UNIX System V, и сов-
                   местима с ANSI C.

Смотрите также      printf va_arg va_end va_start

Пример:

#include
#include

char buffer[80];

int vspf(char *fmt, ...);
{
   va_list argptr;
   int cnt;
   va_start(argptr,format);
   cnt = vsprintf(buffer,fmt,argptr);
   va_end(argptr);
   return cnt;
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90;
   char string[4] = "abc";
   vspf("%d %f %s",inumber,fnumber,string);
   printf("%s",buffer);
   return 0;


cpp

vsscanf
Функция            Выполняет форматный ввод из потока.

Синтаксис          #include
                   int vsscanf(const char *buffer, const char *format,
                               va_list arglist);

Файл, содержащий   stdio.h
прототип

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

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

                   Смотри в scanf описание информации, включенной в
                   спецификацию формата.

                   vsscanf может закончить сканирование конкретного
                   поля, не достигнув нормального символа конца_поля
                   (пробел), или полностью прервать его по ряду при-
                   чин. Смотри в scanf описание различных случаев.

Возвращаемое       vsscanf возвращает число входных полей, которые
значение           были сосканированы, преобразованы и запомнены.
                   Возвращаемое значение не включает сканированные
                   поля, которые не были запомнены. Если не было
                   сохранено ни одно поле, то возвращаемое значение
                   - 0.

                   Если vsscanf пытается читать в конце_файла, то
                   возвращаемое значение EOF.

Переносимость      vsscanf поддерживается на UNIX System V.

Смотрите также      fscanf scanf va_arg va_end va_start

Пример:

#include
#include

char buffer[80] = "30 90.0 abc";

int vssf(char *fmt, ...);
{
   va_list argptr;
   int cnt;
   fflash(stdin);
   va_start(argptr,format);
   cnt = vsscanf(buffer,fmt,argptr);
   va_end(argptr);
   return cnt;
}

int main(void)
{
   int inumber;
   float fnumber;
   char string[80];
   vssf("%d %f %s",&inumber,&fnumber,string);
   printf("%d %f %s",inumber,fnumber,string);
   return 0;


cpp

wherex
Функция            Возвращает горизантальную позицию курсора в окне.

Синтаксис          #include
                   int wherex(void);

Файл, содержащий   conio.h
прототип

Описание           wherex возвращает координату X текущей позиции
                   курсора (внутри текущего текстового окна).

Возвращаемое       wherex возвращает целое число от 1 до 80.
значение

Переносимость      wherex действительна только для IBM PC и совмес-
                   тимых с ней. Аналогичная функция существует в
                   Turbo Pascal.

Смотрите также      gettextinfo gotoxy wherey

Пример:

#include

int main(void)
{
   clrscr();
   gotoxy(10,10);
   cprintf("Текущая позиция курсора X:%d  Y: %d",wherex(),wherey());
   getch();
   return 0;


cpp

wherey
Функция            Возвращает вертикальную позицию курсора в окне.

Синтаксис          #include
                   int wherey(void);

Файл, содержащий   conio.h
прототип

Описание           wherey возвращает координату Y текущей позиции
                   курсора ( внутри текущего текстового окна).

Возвращаемое       wherey возвращает целое число от 1 до 25, до 43
значение           или 50.

Переносимость      wherey действительна только для IBM PC и совмес-
                   тимых с ней. Аналогичная функция существует в
                   Turbo Pascal.

Смотрите также      gettextinfo gotoxy wherex

Пример:

#include

int main(void)
{
   clrscr();
   gotoxy(10,10);
   cprintf("Текущая позиция курсора X:%d  Y: %d",wherex(),wherey());
   getch();
   return 0;


cpp

window
Функция            Определяет в текстовом режиме активное окно.

Синтаксис          #include
                   void window(int left,int top,int right,int bottom);

Файл, содержащие   conio.h
прототип

Описание           window определяет текстовое окно на экране. Если
                   координаты заданы неверно, то вызов window игно-
                   рируется.

                   left и top - экранные координаты левого верхнего
                   угла окна.

                   right и bottom - экранные координаты правого ниж-
                   него угла.

                   Минимальный размер текстового окна это: 1 колонка
                   на одной строчке. Окно по умолчанию - это весь
                   экран с координатами:

                     80-колоночный режим: 1, 1, 80, 25
                     40-колоночный режим: 1, 1, 40, 25

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

Переносимость      window действительна только для IBM PC и совмес-
                   тимых с ней. Аналогичная функция существует в
                   Turbo Pascal.

Смотрите также      clreol clrscr delline gettextinfo gotoxy
                    insline puttext textmode

Пример:

#include

int main(void)
{
   window(10,10,40,11);
   textcolor(BLACK);
   textbackground(WHITE);
   cprintf("Это тест\r\n");
   return 0;


cpp

write
Функция            Записывает данные в файл.

Синтаксис          #include
                   int write(int handle, void *buf, unsigned len);

Файл, содержащий   io.h
прототип

Описание           write записывает буфер, содержащий данные, в файл
                   или на устройство, соответствующее номеру handle.
                   handle - это логический номер, полученный в опе-
                   рациях creat, open, dup, dup2.

                   Данная функция делает попытку записи len байтов
                   из буфера, адресуемого параметром buf, в файл,
                   соответствующий номеру handle. За исключением си-
                   туации, при которой функция write записывает дан-
                   ные в текстовый файл, количество байтов, записан-
                   ное в файл, будет не больше, чем требуемое коли-
                   чество.

                   Максисмальное число байтов, которое write может
                   записать 65534, т.к. 65535(0xFFFF) тоже самое,
                   что и -1, которая является возвращаемым кодом
                   ошибки для write.

                   В текстовых файлах если write встречает символ
                   перевода строки(LF), она выводит пару CR/LF.

                   Если число действительно записанных байт меньше,
                   чем задано, то должна быть выдана ошибка и воз-
                   можно это говорит о том, что на диске нет места.

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

                   Для файлов, открытых с ключем O_APPEND, файловый
                   указатель устанавливается на EOF, прежде чем бу-
                   дет осуществлена запись данных.

Возвращаемое       write возвращает число записанных байтов. При
значение           записи в текстовый файл генерируемые символы
                   возврата каретки CR не считаются. В случае ошибки
                   write возвращает -1, и устанавливает глобальную
                   переменную errno в:

                     EACCED - Permission denied;
                     EBADR  - Bad file number.

Переносимость      write поддерживается на UNIX-системах.

Смотрите также      creat lseek open read _write