Библиотечные функции

Cи - Справочник

  • Введение.
  • Библиотечные функции.
  • Сортировать по модулям.
  • Сортировать по имени.

 ГЛАВА 2
 ----------------------------------------------------------------
 Библиотечные функции.

      Примечание: Все  примеры  программ из этой главы содержатся
 во встроенной справочной системе.  Это означает,  что вы  можете
 просто скопировать их из нее и вставить в свой файл.

      Эта глава  содержит  подробное  описание  всех библиотечных
 функций  Borland   C++.   Некоторые   функции   группируются   в
 "семейства"  (например,  функции  exec...  и  spawn...,  которые
 создают,  загружают и запускают программы),  т.к.  они выполняют
 похожие  или взаимозависимые действия.  Мы же для каждой функции
 приводим отдельное описание.  На пример, если вы хотите получить
 информацию  о  функции  free,  вы  будете искать именно free и в
 описании функции вы найдете следующую информацию:

      - описание того, что делает функция free,

      - синтаксис для вызова функции free,

      - в каких включаемых  файлах  содержится  прототип  функции
        free,

      - детальное  описание  того,  как  работает  free и как она
        взаимосвязана с другими функциями,  предназначенными  для
        выделения памяти,

      - список   других   компиляторов,   которые  имеют  сходную
        функцию,

      - ссылки на взаимосвязанные функции Borland C++,

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

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

                 Описание библиотечных функций.

----------------------------------------------------------------------
имя функции
----------------------------------------------------------------------
Функция            Краткое описание того, что делает эта функция.

Синтаксис          #include <header.h>

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

                   function(modifier parameter[,...]);

                   (Это описание  синтаксиса   для   функции;   [,...]
                   означает,    что    могут   присутствовать   другие
                   параметры и их модификаторы).

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

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

Возвращаемое       Приводится  значение, которое функция
значение           возвратит, если оно существует. Если используется
                   глобальная переменная errno, то приводится также ее
                   значение. (Описание значений  переменной  errno  вы
                   найдете в документации по DOS.)

Переносимость      Определяет системы и языки, в которых доступна
                   функция. Это может быть UNIX,  IBM PC и совместимые
                   компьютеры, C++, Windows а также стандарт ANSI С.

Смотрите также     Перечисляются другие функции, которые вас
                   могут заинтересовать.  Если  имя  функции  содержит
                   перечисление       (funcname...,       ...funcname,
                   func...name),  то  это  значит,  что  имеет   место
                   семейство функций (например,  exec...  ссылается на
                   целое семейство функций:  execl,  execle,  execlpe,
                   execv, execve, execvp и execvpe).

Пример             /* Здесь вы найдете пример маленькой программы,
                   которая иллюстрирует   использование    этой    (и,
                   возможно, связанных с ней) функции. */
[Наверх]
Powered by x0r.


Введение

Cи - Справочник

  • Введение.
  • Библиотечные функции.
  • Сортировать по модулям.
  • Сортировать по имени.
                           1. Введение.

      Это руководство содержит описание всех библиотечных функций
 библиотеки  Borland  C++,  общих  переменных  и  типов,  а также
 примеры программ  для  иллюстрации   использования   большинства
 функций, переменных и типов.

      Если вы  только  начинаете программировать на языке "C" или
 "C++", или,  если вам нужна информация о содержимом документации
 по Borland C++,  то вам сначала лучше обратиться ко второй главе
 тома "Getting  Started",  которая  называется   "Navigating   in
 Borland  C++  manuals".

      Ниже дано краткое описание глав данного руководства:

      Глава 1:  Функция main.  В этой главе обсуждаются аргументы
 функции main,   включая   содержащие    символы    маскирования,
 приводится несколько  примеров  программ  и короткая информация,
 касающаяся соглашению  по  вызову  языка  Pascal.  Кроме   этого
 описано возвращаемое функцией main значение.

      Глава 2: Библиотека Borland C++. Описание всех библиотечных
 функций Borland C++ в алфавитном  порядке.  Для  каждой  функции
 указана   следующая  информация:  синтаксис,  включаемые  файлы,
 краткое описание действия,  возвращаемые значения, переносимость
 данной функции  со  списком  ссылок на связанные с ней функции и
 пример использования данной функции.

      Глава 3:   Глобальные   переменные.   Приведено    описание
 глобальных  переменных  Borland C++.  Вы можете использовать эти
 переменные,  чтобы освободить себя от работы по программированию
 общих  переменных  (дата,  время,  сообщения об ошибках,  размер
 стека и т.п.).

      2. Документация по классам и функциям, членам классов.

      Определенные классы и функции -  члены  класса  включены  в
 главу 2. Ниже приведен список классов и функций - членов классов
 и номера страниц, на которых они описаны.

 ----------------------------------------------------------------
 Имя          Тип                       Номер страницы
 ----------------------------------------------------------------
 abs          Функция - член класса      11
 acos         Функция - член класса      16
 arg          Функция - член класса      19
 asin         Функция - член класса      21
 atan         Функция - член класса      23
 bcd          Класс                      32
 complex      Класс                      69
 conj         Функция - член класса      71
 cos          Функция - член класса      73
 cosh         Функция - член класса      74
 exp          Функция - член класса      115
 imag         Функция - член класса      263
 log          Функция - член класса      306
 log10        Функция - член класса      307
 norm         Функция - член класса      335
 pow          Функция - член класса      356
 polar        Функция - член класса      354
 real         Функция - член класса      387
 sin          Функция - член класса      469
 sinh         Функция - член класса      470
 sqrt         Функция - член класса      479
 tan          Функция - член класса      515
 tanh         Функция - член класса      516
 ----------------------------------------------------------------

      Примечание: Шрифты,  используются в  данном  руководстве  в
 соответствии с описанием, приведенным в "Getting Started".

 ГЛАВА 1
 ---------------------------------------------------------------
 Функция main.

      Каждая программа  на  С  и  C++  должна иметь функцию main;
 причем ваше дело,  где вы ее поместите.  Некоторые  программисты
 помещают ее в начале файла, некоторые в конце. Однако независимо
 от ее положения необходимо помнить следующее:

                    Аргументы функции "main".

      Запускающая процедура Borland C++ посылает функции main три
 параметра (аргумента): argc, argv и env.

      - argc,  целое,  -  это  число аргументов командной строки,
        посылаемое функции main,

      - argv это массив указателей на строки (char * []).

        Под  версией  DOS   3.x   и   более   поздними   argv[0]
         определяется как полный маршрут запускаемой программы.

        При работе под более ранними версиями DOS argv указывает
         на нулевую строку ("").

        argv[1] указывает на первую после имени программы строку
         командной строки.

        argv[2] указывает на вторую после имени программы строку
         командной строки.

        argv[argc-1] указывает на последний аргумент, посылаемый
         функции main.

        argv[argc] содержит NULL.

      - env также является массивом указателей на строки.  Каждый
        элемент env[] содержит строку вида ENVVAR=значение.

        ENVVAR - это имя переменной среды, типа PATH или 87.

        <значение> это  значение  данной  переменной  окружения,
         например C:\DOS;C:\TOOLS (для PATH) или YES (для 87).

      Заметим, однако,  что  если вы описываете некоторые из этих
 аргументов,  то вы должны описывать их в  таком  порядке:  argc,
 argv, env. Например, допустимы следующие объявления аргументов:

     main()
     main(int argc)         /* допустимо но не очень хорошо */
     main(int argc, char *argv[])
     main(int argc, char *argv[], char *env[])

      Объявление main(int argc) не очень  удобно  тем,  что  зная
 количество параметров, вы не имеете доступа к ним самим.

      Аргумент env  всегда  доступен  через глобальную переменную
 environ. Смотрите описание переменной  environ  (в  Главе  3)  и
 функции putenv и getenv (в Главе 2).

      Параметры argc  и argv также доступны через переменные_argc
 и _argv.

        Пример программы, использующей argc, argv и env.

      Это пример  программы   ARGS.EXE,   которая   демонстрирует
 простейший  путь  использования  аргументов,  посылаемых функции
 main.

     /* программа ARGS.C */

 #include <stdio.h>
 #include <stdlib.h>

 void main(int argc, char *argv[], char *env[])
 {
 int i;

 printf("Значение argc равно %d \n\n",argc);
 printf("В командной строке содержится %d параметров \n\n",argc);

 for (i=0; i<=argc; i++)
    printf(" argv[%d]: %s\n",i,argv[i]);

 printf("Среда содержит следующие строки:\n");

 for (i=0; env[i] != NULL; i++)
    printf(" env[%d]: %s\n",i,env[i]);

 return 0;
 }

      Предположим, что   вы   запускаете  программу  ARGS.EXE  со
 следующей командной строкой:

 C:> args first_arg "arg with blanks" 3 4 "last but one" stop!

      Заметим, что  вы  можете  послать  аргумент  с   пробелами,
 заключив   его  в  двойные  кавычки,  как  показано  на  примере
 "argument with  blanks"  и  "last  but  one"  в  примере  вызова
 программы.

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

     Значение argc равно 7

     В командной строке содержится 7 параметров

        argv[0]: c:\turboc\testargs.exe
        argv[1]: first_arg
        argv[2]: arg with blank
        argv[3]: 3
        argv[4]: 4
        argv[5]: last but one
        argv[6]: stop!

     Среда содержит следующие строки:

        env[0]: COMSPEC=C:\COMMAND.COM
        env[1]: PROMPT=$p $g
        env[2]: PATH=C:\SPRINT;C:\DOS;C:\BC

      Максимальная общая  длина  командной   строки,   посылаемая
 функции  main (включая пробелы и имя самой программы),  не может
 превышать 128 символов; это ограничения DOS.

             Символы маскирования в командной строке

      Аргументы командной   строки   могут   содержать    символы
 маскирования.  При  этом  они  могут  расширяться  для всех имен
 файлов,  которые совпадают с аргументом так,  как это  делается,
 например,  с  командой  DOS  copy.  Для  использования  символов
 маскирования   необходимо   при   связывании   вашей   программы
 редактором    связей   подсоединить   к   ней   объектный   файл
 WILDARGS.OBJ, который поставляется с Borland C++.

      Если файл WILDARGS.OBJ подсоединен к вашей программе, то вы
 можете в командной строке использовать аргументы типа "*.*". При
 этом имена всех файлов,  подходящих к данной маске,  заносятся в
 массив argv.  Максимальный размер массива argv зависит только от
 объема динамической области памяти.

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

      Аргументы, заключенные   в   двойные  кавычки  ("..."),  не
 расширяются.

      Пример. Следующие  команды  компилируют   файл   ARGS.C   и
 связывают   его   с  модулем  WILDARGS.OBJ,  а  затем  запускают
 получившуюся программу ARGS.EXE:

     bcc args wildarg.obj

     args C:\BORLANDC\INCLUDE\*.H  "*.C"

      При запуске ARGS.EXE первый аргумент  расширяется  до  имен
 всех файлов  с  расширением  H в директории Borland C++ INCLUDE.
 Отметим,  что все строки  включают  полный  маршрут  (к  примеру
 C:\TC\INCLUDE\ALLOC.H).  Аргумент  *.C не расширяется,  т.к.  он
 заключен в кавычки.

      Если вы работаете в Интегрированном Окружении (BC.EXE),  то
 вам  просто  нужно  указать  в  меню  проекта имя файла проекта,
 который должен содержать следующие строки:

     ARGS
     WILDARGS.OBJ

      Затем с  помощью  команд "Run/Arguments" следует установить
 параметры командной строки.

      Замечание. Если  вы  хотите,   чтобы   обработка   символов
 маскирования   происходила   всегда,   т.е.  чтобы  WILDARGS.OBJ
 автоматически  подсоединялся  редактором   связей,   вы   должны
 модифицировать вашу стандартную библиотеку C?.LIB, добавив в нее
 файл WILDARGS.OBJ.  Для этого удалите из  библиотеки  SETARGV  и
 добавьте WILDARGS.  Это можно сделать с помощью следующих команд
 (мы подразумеваем,  что стандартные  библиотеки  и  WILDARGS.OBJ
 содержатся в текущей директории):

      TLIB описана в главе 7 "Утилиты" документа "User's Guide".

      tlib cs -setargv +wildargs
      tlib cc -setargv +wildargs
      tlib cm -setargv +wildargs
      tlib cl -setargv +wildargs
      tlib ch -setargv +wildargs

   Компиляция с использованием ключа  -p  (Соглашение  по  вызову
                         языка Паскаль).

      Если вы  компилируете вашу программу,  используя соглашение
 по вызову языка Паскаль (детально описано в главе 9 "Interfacing
 with   assembly  languige",  "Programmer's  Guide"),  вы  должны
 помнить, что функция main должна быть явно объявлена как функция
 С. Это  можно  сделать  с помощью ключевого слова cdecl примерно
 так:

     cdecl main(int argc, char *argv[], char *env[])

              Значение, возвращаемое функцией main.

      Функция main возвращает значение,  которое  является  кодом
 завершения программы: это целое. Однако, если ваша программа для
 завершения использует функцию exit (или _exit),  то возвращаемым
 значением будет аргумент этой функции.

      Например, если ваша программа содержит вызов:

      exit(1)

      то код завершения будет равен 1.

      Если для  запуска  программы вы используете интегрированное
 окружение  Borland  C++  (BC.EXE),  то  посмотреть  возвращаемое
 значение функции main вы можете, выбрав "File | Get Info".


Список функций (по модулям)

Справочник С/C++ - Список функций

  • Введение.
  • Библиотечные функции.
  • Сортировать по модулям.
  • Сортировать по имени.
alloc.h
[brk] [calloc] [coreleft] [farcalloc] [farcoreleft] [farfree] [farheapcheck] [farheapcheckfree] [farheapchecknode] [farheapfillfree] [farheapwalk] [farmalloc] [farrealloc] [heapcheck] [heapcheckfree] [heapchecknode] [heapfillfree] [heapwalk] [sbrk] [free] [malloc] [realloc]
assert.h
[assert]
bcd.h
[bcd]
bios.h
[bioscom] [biosdisk] [biosequip] [bioskey] [biosmemory] [biosprint] [biostime]
complex.h
[real] [abs] [acos] [arg] [asin] [atan] [complex] [conj] [cos] [cosh] [exp] [imag] [log] [log10] [norm] [polar] [pow]
conio.h
[_setcursortype] [cgets] [clreol] [clrscr] [cprintf] [cputs] [cscanf] [delline] [getch] [getche] [getpass] [gettext] [gettextinfo] [gotoxy] [highvideo] [insline] [kbhit] [lowvideo] [movetext] [normvideo] [putch] [puttext]
ctype.h
[isalnum] [isalpha] [isascii] [iscntrl] [isdigit] [isgraph] [islower] [isprint] [ispunct] [isspace] [isupper] [isxdigit]
dir.h
[chdir] [findfirst] [findnext] [fnmerge] [fnsplit] [getcurdir] [getcwd] [getdisk] [mkdir] [mktemp] [rmdir] [searchpath] [setdisk]
dos.h
[FP_OFF] [FP_SEG] [MK_FP] [_OvrlInitEms] [_OvrlInitExt] [__emit__] [absread] [abswrite] [allocmem] [bdos] [bdosptr] [country] [ctrlbrk] [delay] [disable] [dosexterr] [dostounix] [enable] [freemem] [geninterrupt] [getcbrk] [getdate] [getdfree] [getdta] [getfat] [getfatd] [getpsp] [gettime] [getvect] [getverify] [harderr] [hardresume] [hardretn] [inport] [inportb] [int86] [int86x] [intdos] [intdosx] [intr] [keep] [nosound] [outport] [outportb] [parsfnm] [peek] [peekb] [poke] [pokeb] [randbrd] [randbwr] [segread] [setblock] [setcbrk] [setdate] [setdta] [settime] [setvect]
float.h
[_clear87] [_control87] [_fpreset]
graphics.h
[_graphfreemem] [_graphgetmem] [arc] [bar] [bar3d] [circle] [cleardevice] [clearviewport] [closegraph] [detectgraph] [drawpoly] [ellipse] [fillellipse] [fillpoly] [floodfill] [getarccoords] [getaspectratio] [getbkcolor] [getcolor] [getdefaultplatte] [getdrivername] [getfillpattern] [getfillsettings] [getgraphmode] [getimage] [getlinesttings] [getmaxcolor] [getmaxmode] [getmaxx] [getmaxy] [getmodename] [getmoderange] [getpalette] [getpalettesize] [getpixel] [gettextsettings] [getviewsettings] [getx] [gety] [graphdefaults] [grapherrormsg] [graphresult] [imagesise] [initgraph] [installuserdriver] [installuserfont] [line] [linerel] [lineto] [moverel] [moveto] [outtext] [outtextxy] [pieslice] [putimage] [putpixel] [rectangle] [registerbgidriver] [registerbgifont] [restorecrtmode] [sector] [setactivepage] [setallpalette] [setaspectratio] [setbkcolor] [setcolor] [setfillpattern] [setfillstyle] [setgraphbufsize] [setgraphmode] [setlinestyle] [setpalette] [setrgbpalette] [settextjustify] [settextstyle] [setusercharsize]
io.h
[_chmod] [_close] [_creat] [_open] [_read] [access] [chmod] [chsize] [close] [creat] [creatnew] [creattemp] [dup] [dup2] [eof] [filelength] [getftime] [ioctl] [isatty] [lock] [lseek] [open] [read] [setftime] [setmode]
locale.h
[localeconv] [setlocale]
math.h
[abs] [acos] [asin] [atan] [atan2] [atof] [cabs] [ceil] [cos] [cosh] [exp] [fabs] [floor] [fmod] [frexp] [hypot] [labs] [ldexp] [log] [log10] [matherr] [modf] [poly] [pow] [pow10]
mem.h
[_fmemccopy] [_fmemchr] [_fmemcmp] [_fmemcopy] [_fmemicmp] [_fmemset] [memccpy, _fmemccpy] [memchr,_fmemchr] [memcmp, _fmemcmp] [memcpy, _fmemcpy] [memicmp] [memmove] [memset, _fmemset] [memset, _fmemset] [movedata] [movmem] [setmem]
process.h
[_exit] [abort] [execl] [execle] [execlp] [execv] [execve] [execvp] [execvpe] [exit] [getpid]
setjmp.h
[ongjmp] [etjmp]
signal.h
[raise]
stdio.h
[clearerr] [fclose] [fcloseall] [fdopen] [feof] [ferror] [fflush] [fgetc] [fgetchar] [fgetpos] [fgets] [fileno] [flushall] [fopen] [fprintf] [fputc] [fputchar] [fputs] [fread] [freopen] [fscanf] [fseek] [fsetpos] [ftell] [fwrite] [getc] [getchar] [gets] [getw] [perror] [printf] [putc] [putchar] [puts] [putw] [remove] [rename] [rewind] [scanf] [setbuf] [setvbuf]
stdlib.h
[_exit] [_lrotl] [_lrotr] [_rotl] [_rotr] [abort] [atexit] [atof] [atoi] [atol] [bsearch] [calloc] [div] [ecvt] [exit] [fcvt] [gcvt] [getenv] [itoa] [labs] [ldiv] [lfind] [lsearch] [ltoa] [max] [min] [putenv] [qsort] [rand] [random] [randomize] [free] [malloc] [realloc]
string.h
[_fstrcat] [_fstrchr] [_fstrcspn] [_fstrdup] [_fstricmp] [_fstrlen] [_fstrlwr] [_fstrncat] [_fstrncmp] [_fstrncmp] [_fstrnicmp] [_fstrnset] [_fstrpbrk] [_fstrrchr] [_fstrrev] [_fstrset] [_fstrspn] [_fstrstr] [_fstrtok] [_fstrupr] [memcmp, _fmemcmp] [memcpy, _fmemcpy] [memicmp] [memmove] [memset, _fmemset] [movedata]
sys\stat.h
[fstat]
sys\timeb.h
[ftime]
time.h
[asctime] [clock] [ctime] [diftime] [gmtime] [localtime] [mktime]


Список функций (по алфавиту)

Справочник С/C++ - Список функций

  • Введение.
  • Библиотечные функции.
  • Сортировать по модулям.
  • Сортировать по имени.
A
[abort] [abs] [absread] [abswrite] [access] [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
[delay] [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] [_fmemccopy] [_fmemchr] [_fmemcmp] [_fmemcopy] [_fmemicmp] [_fmemset] [fmod] [fnmerge] [fnsplit] [fopen] [FP_OFF] [_fpreset] [fprintf] [FP_SEG] [fputc] [fputchar] [fputs] [fread] [free] [freemem] [freopen] [frexp] [fscanf] [fseek] [fsetpos] [fstat] [_fstrcat] [_fstrchr] [_fstrcspn] [_fstrdup] [_fstricmp] [_fstrlen] [_fstrlwr] [_fstrncat] [_fstrncmp] [_fstrncmp] [_fstrnicmp] [_fstrnset] [_fstrpbrk] [_fstrrchr] [_fstrrev] [_fstrset] [_fstrspn] [_fstrstr] [_fstrtok] [_fstrupr] [ftell] [ftime] [fwrite]
G
[gcvt] [geninterrupt] [getarccoords] [getaspectratio] [getbkcolor] [getc] [getcbrk] [getch] [getchar] [getche] [getcolor] [getcurdir] [getcwd] [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] [imagesise] [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, _fmemccpy] [memchr,_fmemchr] [memcmp, _fmemcmp] [memcpy, _fmemcpy] [memicmp] [memmove] [memset, _fmemset] [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] [segread] [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]


__emit__

[Справочник С/C++] - __emit__

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

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

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

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

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

                   Предупреждение! Этой функцией могут воспользоваться
                   только  программисты,  хорошо   ориентирующиеся   в
                   машинном  языке  процессоров  семейства  80х86.  Вы
                   можете использовать данную  функцию  для  помещения
                   произвольных  байтов  в машинный код функции.  Если
                   эти  байты  будут  неправильными,  то   это   может
                   привести к  неисправимой  ошибке.  Borland  C++  не
                   анализирует код, помещаемый таким образом. Если эти
                   машинные  команды  изменяют  значение регистров или
                   переменных,  то Borland 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<dos.h>

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


_chmod

[Справочник С/C++] - _chmod

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

Синтаксис          #include <dos.h>
                   #include <io.h>
                   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<errno.h>
#include<stdio.h>
#include<dos.h>
#include<io.h>

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


_clear87

[Справочник С/C++] - _clear87

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

Синтаксис          #include<float.h>
                   unsigned int _clear87(void);

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

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

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

Смотрите также     _control87, _fpreset, _status87.

Пример:

#include<stdio.h>
#include<float.h>

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());


_close

[Справочник С/C++] - _close

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

Синтаксис          #include<io.h>
                   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<string.h>
#include<fcntl.h>
#include<io.h>

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


_control87

[Справочник С/C++] - _control87

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

Синтаксис          #include<float.h>
                   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,   поскольку
                   Borland   C++   использует  ненормальную  обработку
                   исключительных ситуаций.

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

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

Смотрите также     _clear87, _fpreset, signal, _status87.

Пример:            control.c


_creat

[Справочник С/C++] - _creat

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

Синтаксис          #include <dos.h>
                   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<sys\stat.h>
#include<process.h>
#include<string.h>
#include<stdio.h>
#include<fcntl.h>
#include<errno.h>
#include<io.h>

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


_exit

[Справочник С/C++] - _exit

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

Синтаксис          #include<stdlib.h>
                   void _exit(int status);

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

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

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

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

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

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

Пример:

#include<stdlib.h>
#include<stdio.h>

void dose(void);

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


_fmemccopy

[Справочник С/C++] - _fmemccopy

_fmemccopy
Смотрите функцию memccpy.


_fmemchr

[Справочник С/C++] - _fmemchr

_fmemchr
Смотрите функцию memchr.


_fmemcmp

[Справочник С/C++] - _fmemcmp

_fmemcmp
Смотрите функцию memcmp.


_fmemcopy

[Справочник С/C++] - _fmemcopy

_fmemcopy
Смотрите функцию memcpy.


_fmemicmp

[Справочник С/C++] - _fmemicmp

_fmemicmp
Смотрите функцию memicmp.


_fmemset

[Справочник С/C++] - _fmemset

_fmemset
Смотрите функцию memset.


_fpreset

[Справочник С/C++] - _fpreset

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

Синтаксис          #include<float.h>
                   void _fpreset();

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

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

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

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

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

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

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

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

Смотрите также     clear87, _control87, exec...,  spawn...,
                   _status87, system.

Пример:

#include<stdio.h>
#include<float.h>
#include<setjmp.h>
#include<signal.h>
#include<process.h>
#include<conio.h>

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");


_fstrcat

[Справочник С/C++] - _fstrcat

_fstrcat
Смотрите функцию strcat.


_fstrchr

[Справочник С/C++] - _fstrchr

_fstrchr
Смотрите функцию strchr.


_fstrcspn

[Справочник С/C++] - _fstrcspn

_fstrcspn
Смотрите функцию strcspn.


_fstrdup

[Справочник С/C++] - _fstrdup

_fstrdup
Смотрите функцию strdup.


_fstricmp

[Справочник С/C++] - _fstricmp

_fstricmp
Смотрите функцию stricmp.


_fstrlen

[Справочник С/C++] - _fstrlen

_fstrlen
Смотрите функцию strlen.


_fstrlwr

[Справочник С/C++] - _fstrlwr

_fstrlwr
Смотрите функцию strlwr.


_fstrncat

[Справочник С/C++] - _fstrncat

_fstrncat
Смотрите функцию strncat.


_fstrncmp

[Справочник С/C++] - _fstrncmp

_fstrncmp
Смотрите функцию strncmp.


_fstrnicmp

[Справочник С/C++] - _fstrnicmp

_fstrnicmp
Смотрите функцию strnicmp.


_fstrnset

[Справочник С/C++] - _fstrnset

_fstrnset
Смотрите функцию strnset.


_fstrpbrk

[Справочник С/C++] - _fstrpbrk

_fstrpbrk
Смотрите функцию strpbrk.


_fstrrchr

[Справочник С/C++] - _fstrrchr

_fstrrchr
Смотрите функцию strrchr.


_fstrrev

[Справочник С/C++] - _fstrrev

_fstrrev
Смотрите функцию strrev.


_fstrset

[Справочник С/C++] - _fstrset

_fstrset
Смотрите функцию strset.


_fstrspn

[Справочник С/C++] - _fstrspn

_fstrspn
Смотрите функцию strspn.


_fstrstr

[Справочник С/C++] - _fstrstr

_fstrstr
Смотрите функцию strstr.


_fstrtok

[Справочник С/C++] - _fstrtok

_fstrtok
Смотрите функцию strtok.


_fstrupr

[Справочник С/C++] - _fstrupr

_fstrupr
Смотрите функцию strupr.


_graphfreemem

[Справочник С/C++] - _graphfreemem

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

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

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

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

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

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

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

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<alloc.h>

#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",grapherrormessage(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);


_graphgetmem

[Справочник С/C++] - _graphgetmem

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

Синтаксис          #include <graphics.h>
                   void far _graphgetmem(unsigned size);

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

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

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

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

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

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<alloc.h>

#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",grapherrormessage(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);


_lrotl

[Справочник С/C++] - _lrotl

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

Синтаксис          #include<stdlib.h>
                   unsigned long _lrotl(unsigned long val,int count);

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

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

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

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

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

Пример:

#include<stdlib.h>
#include<stdio.h>

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


_lrotr

[Справочник С/C++] - _lrotr

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

Синтаксис          #include<stdlib.h>
                   unsigned long_lrotr(unsigned long val, int count);

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

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

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

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

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

Пример:

#include<stdlib.h>
#include<stdio.h>

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


_open

[Справочник С/C++] - _open

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

Синтаксис          #include <fcntl.h>
                   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.  Эти
                   атрибуты   разделения   доступа   к  файлу  даны  в
                   дополнение к операциям блокировки.

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

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

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

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

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

Пример:

#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>

int main(void)
{
   int handle;
   char msg[] = "Hello world!";
   if((handle = _open("TEST.$$$",O_RDWR)) == -1) {
      perror("Error:");
      return 1;
   }
   _write(handle,msg,strlen(msg));
   _close(Handle);


_OvrlInitEms

[Справочник С/C++] - _OvrlInitEms

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

Синтаксис          #include<dos.h>
                   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 уникальна для Borland C++.

Смотрите также     _OvrlInitExt, ovrbuffer (глобальная переменная).

Пример:

#include<dos.h>

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


_OvrlInitExt

[Справочник С/C++] - _OvrlInitExt

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

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

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

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

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

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

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

Смотрите также     _OvrlInitEms, ovrbuffer (глобальная переменная).

Пример:

#include<dos.h>

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


_read

[Справочник С/C++] - _read

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

Синтаксис          #include<io.h>
                   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<stdio.h>
#include<io.h>
#include<alloc.h>
#include<fcntl.h>
#include<process.h>
/* #include<sys\stat.h> */

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


_rotl

[Справочник С/C++] - _rotl

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

Синтаксис          #include<stdlib.h>
                   unsigned _rotl(unsigned value, int count);

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

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

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

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

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

Пример:

#include<stdlib.h>
#include<stdio.h>

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


_rotr

[Справочник С/C++] - _rotr

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

Синтаксис          #include<stdlib.h>
                   unsigned _rotr(unsigned value, int count);

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

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

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

Смотрите также     _lrotl, _lrotr, _rotl.

Пример:

#include<stdlib.h>
#include<stdio.h>

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


_setcursortype

[Справочник С/C++] - _setcursortype

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

Синтаксис          #include<conio.h>
                   void _setcursortype(int cur_t);

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

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

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

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

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

Пример:

#include<conio.h>

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


abort

[Справочник С/C++] - abort

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

Синтаксис:         #include<stdlib.h>
                   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<stdio.h>
#include<stdlib.h>

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


abs

[Справочник С/C++] - abs

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

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

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

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

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

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

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

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

Пример:

#include<stdio.h>
#include<math.h>

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

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


absread

[Справочник С/C++] - absread

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

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

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

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

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

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

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

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

Переносимость      absread уникальна для DOS.
                   Функция не поддерживается Windows.

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

Пример:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<ctype.h>

#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<SEGSIZE; i+=16)
   {
      if((i/16)==20)
      {
          printf("Для продолжения нажмите любую клавишу");
          getch();
          printf("\n");
      }
   printf("%03d",i);
   for(j=0;j<16;j++)
      printf("%02X ",buf[i+j]);
   printf("\t");
   for(j=0; j<16;j++)
      if(isprint(buf[i+j]))
          printf("%c",buf[i+j]);
      else
          printf(".");
          printf("\n");


abswrite

[Справочник С/C++] - abswrite

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

Синтаксис          #include<dos.h>
                   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 = адрес памяти, откуда записываются данные.

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

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

Переносимость      abswrite уникальна для DOS.
                   Функция не поддерживается Windows.

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


access

[Справочник С/C++] - access

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

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

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

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

                   Список значений параметра amode:

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

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

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

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

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

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

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

Пример:

#include <stdio.h>
#include <io.h>

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: Нет


acos

[Справочник С/C++] - acos

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

Синтаксис          Версия для вещественных    Версия для комплексных
                   #include <math.h>          #include<complex.h>
                   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
                   требует С++ и скорее всего непереносима.

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

Пример:

#include<stdio.h>
#include<math.h>

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


allocmem

[Справочник С/C++] - allocmem

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

Синтаксис          #include<dos.h>
                   int allocmem(unsigned size, unsigned *segp);

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

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

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

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

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

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

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

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

Переносимость      allocmem уникальна для DOS.
                   Функция не поддерживается Windows.

Смотрите также     coreleft,freemem,malloc,setblock.

Пример:

#include<dos.h>
#include<alloc.h>
#include<stdio.h>

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


arc

[Справочник С/C++] - arc

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

Синтаксис          #include <graphics.h>
                   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).

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

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

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

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor(1));

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

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


arg

[Справочник С/C++] - arg

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

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

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

Описание           arg возвращает угол в радианах числа на комплекс-
                   ной плоскости.

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

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

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

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

Пример:

#include<iostream.h>
#include<complex.h>

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


asctime

[Справочник С/C++] - asctime

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

Синтаксис          #include <time.h>
                   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 <stdio.h>
#include <string.h>
#include <time.h>

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


asin

[Справочник С/C++] - asin

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

Синтаксис          Версия для вещественных    Версия для комплексных
                   #include <math.h>          #include<complex.h>
                   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, atan2, complex, cos, matherr, sin, tan.

Пример:

#include <stdio.h>
#include <math.h>

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


assert

[Справочник С/C++] - assert

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

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

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

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

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

             Assertion failed: <test>, file <filename>, line <linenum>

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

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

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

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

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

Пример:

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

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:\BC\ASSERT.C, line 12


atan

[Справочник С/C++] - atan

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

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

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

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

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

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

Возвращаемое       Вещественная версия atan возвращает значение в диа-
значение           пазоне от -pi/2 до pi/2.

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

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

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

Пример:

#include <stdio.h>
#include <math.h>

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


atan2

[Справочник С/C++] - atan2

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

Синтаксис          #include <math.h>
                   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 <stdio.h>
#include <math.h>

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


atexit

[Справочник С/C++] - atexit

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

Синтаксис          #include<stdlib.h>
                   int atexit(atexit_t func)

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

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

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

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

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

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

Пример:

#include <stdlib.h>
#include <stdio.h>

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");


atof

[Справочник С/C++] - atof

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

Синтаксис          #include <math.h>
                   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<stdlib.h>
#include<stdio.h>

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


atoi

[Справочник С/C++] - atoi

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

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

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


atol

[Справочник С/C++] - atol

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

Синтаксис          #include <stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

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


bar

[Справочник С/C++] - bar

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

Синтаксис          #include <graphics.h>
                   #include <conio.h>
                   void far bar(int left,int top,int right,int
                                bottom);

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

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

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

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

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

Смотрите также     bar3d, rectangle, setcolor, setfillstyle,
                   setlinestyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

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

/* цикл по шаблонам заполнения */
for(i=SOLID_FILL; i<USER_FILL; i++)
{
   /* установить тип заполнения */
   setfillstyle(i,getmaxcolor());

   /* нарисовать прямоугольник */
   bar(midx - 50, midy - 50, midx + 50, midy+50);

   getch();
}

/* очистить */
getch();
closegraph();
result 0;


bar3d

[Справочник С/C++] - bar3d

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

Синтаксис          #include <graphics.h>
                   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)

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

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

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

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

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

/* цикл по шаблонам заполнения */
for(i=SOLID_FILL; i<USER_FILL; i++)
{
   /* установить тип заполнения */
   setfillstyle(i,getmaxcolor());

   /* нарисовать трехмерный столбец */
   bar3d(midx - 50, midy - 50, midx + 50, midy+50, 10, 1);

   getch();
}

/* очистить */
closegraph();
result 0;


bcd

[Справочник С/C++] - bcd

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

Синтаксис          #include<bcd.h>
                   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 уникальна для Borland C++; и работает только с
                   С++.

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

Пример:

#include<iostream.h>
#include<bcd.h>

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


bdos

[Справочник С/C++] - bdos

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

Синтаксис          #include <dos.h>
                   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, int86, int86x, intdos,
                   intdosx.

Пример:

#include <stdio.h>
#include <dos.h>

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

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

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


bdosptr

[Справочник С/C++] - bdosptr

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

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

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

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

                   В системных   вызовах,  требующих  целый  аргумент,
                   используйте функцию bdos; если в качестве аргумента
                   функции требуют  указатель,  то используйте функцию
                   bdosptr. Для моделей данных large (compact,  large,
                   huge)  предпочтительнее  использовать для системных
                   вызовов функцию  bdosptr  вместо  bdos  с  адресным
                   указателем в  качестве аргумента.  В моделях данных
                   типа small параметр argument в bdosptr задает DX; в
                   моделях данных типа large он задает значение DS:DX,
                   используемое в системном вызове.

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

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

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

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

Смотрите также     bdos, geninterrupt, int86, int86x, intdos, intdosx.

Пример:

#include <stdio.h>
#include <dos.h>

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

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

/* примечание пер. По моему это ошибка. В файле dop.aga приведен
   пример, который использовался для данной функции в Turbo C++. */


bioscom

[Справочник С/C++] - bioscom

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

Синтаксис          #include<bios.h>
                   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 <bois.h>
#include <conio.h>

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

int main(void)
{
    int in, out, status,DONE=FALSE;
    bioscom(0, SETTINGS, COM1);
    cprintf("... BIOSCOM [ESC] to exit ...\n");
    while (!DONE)
    {
       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')
              DONE = TRUE;
              bioscom(1, in, COM1);
           }


biosdisk

[Справочник С/C++] - biosdisk

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

Синтаксис          #include<bios.h>
                   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<bios.h>
#include<stdio.h>

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");


biosequip

[Справочник С/C++] - biosequip

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

Синтаксис          #include<bios.h>
                   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 <stdio..h>
#include <bios.h>

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


bioskey

[Справочник С/C++] - bioskey

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

Синтаксис          #include<bios.h>
                   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 <stdio.h>
#include <bios.h>
#include <ctype.h>

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


biosmemory

[Справочник С/C++] - biosmemory

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

Синтаксис          #include<bios.h>
                   int biosmemory(void);

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

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

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

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

Пример:

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


biosprint

[Справочник С/C++] - biosprint

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

Синтаксис          #include<bios.h>
                   int biosprint(int cmd, int abyte, int port);

Файл, содержащий   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<stdio.h>
#include<conio.h>
#include<bios.h>

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");


biostime

[Справочник С/C++] - biostime

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

Синтаксис          #include <bios.h>
                   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<bios.h>
#include<time.h>
#include<conio.h>

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


brk

[Справочник С/C++] - brk

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

Синтаксис          #include<alloc.h>
                   int brk(void * addr);

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

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

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

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

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

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

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

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

Пример:

#include<stdio.h>
#include<alloc.h>

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


bsearch

[Справочник С/C++] - bsearch

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

Синтаксис          #include <stdlib.h>
                   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 <stdlib.h>
#include <stdio.h>

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


cabs

[Справочник С/C++] - cabs

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

Синтаксис          #include <math.h>
                   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<stdio.h>
#include<math.h>

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


calloc

[Справочник С/C++] - calloc

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

Синтаксис          #include <stdlib.h>
                   void * calloc(size_t nitems, size_t size);

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

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

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

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

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

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

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

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

Пример:

#include<stdio.h>
#include<alloc.h>
#include<string.h>

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


ceil

[Справочник С/C++] - ceil

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

Синтаксис          #include <math.h>
                   double ceil(double x);

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

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

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

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

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

Пример:

#include<math.h>
#include<stdio.h>

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


cgets

[Справочник С/C++] - cgets

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

Синтаксис          #include<conio.h>
                   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   или   совместимых   с   ними.  Функция  не
                   совместима с Windows.

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

Пример:

#include <stdio.h>
#include <conio.h>

main()
{
    char buffer[83];
    char *p;
    /* место под 80 символов и нулевой завершающий символ   */
    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);


chdir

[Справочник С/C++] - chdir

chdir
Функция            Изменяет текущий каталог.

Синтаксис          #include<dir.h>
                   int chdir(const char * path);

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

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

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

                     chdir("a:\\bc")

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

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

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

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

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

Пример:

#include<stdio.h>
#include<stdlib.h>
#include<dir.h>

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


chmod

[Справочник С/C++] - chmod

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

Синтаксис          #include <sys\stat.h>
                   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<errno.h>
#include<stdio.h>
#include<dos.h>
#include<io.h>

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


chsize

[Справочник С/C++] - chsize

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

Синтаксис          #include<io.h>
                   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<string.h>
#include<fcntl.h>
#include<io.h>

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


circle

[Справочник С/C++] - circle

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

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

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

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

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

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

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

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

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

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor(1));

/* рисует окружность */
circle(midx,midy,radius);

/* очистить */
getch();
closegraph();


cleardevice

[Справочник С/C++] - cleardevice

cleardevice
Функция            Очищает графический экран.

Синтаксис          #include <graphics.h>
                   void far cleardevice(void);

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

Описание           cleardevice стирает (это значит - зарисовывает
                   текущим цветом  фона)  весь  графический  экран   и
                   переносит  CP  (текущую  позицию)  в  начало экрана
                   (0,0).

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

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

Смотрите также     clearviewport.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


clearerr

[Справочник С/C++] - clearerr

clearerr
Функция            Сброс индикации ошибок.

Синтаксис          #include<stdio.h>
                   void clearerr(FILE * stream);

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

Описание           clearerr сбрасывает в 0 ошибку и признак конца
                   файла указанного   потока.   После  того,  как  был
                   установлен  признак  ошибки,   потоковые   операции
                   возвращают  состояние  ошибки  до тех пор,  пока не
                   будет сделано обращение к clearerr или rewind.

                   Признак конца   файла   сбрасывается   при   каждой
                   операции ввода.

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

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

Смотрите также     eof, feof, ferror, perror, rewind.

Пример:

#include<stdio.h>

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


clearviewport

[Справочник С/C++] - clearviewport

clearviewport
Функция            Очищает текущую область просмотра.

Синтаксис          #include <graphics.h>
                   void far clearviewport(void);

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

Описание           clearviewport очищает текущую область просмотра
                   экрана и переносит CP ( текущую позицию ) в  (0,0),
                   относительно области просмотра.

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

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

Смотрите также     cleardevice, getviewsettings, setviewport.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#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",grapherrormessage(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();


clock

[Справочник С/C++] - clock

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

Синтаксис          #include <time.h>
                   clock_t clock(void);

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

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

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

Возвращаемое       Функция  clock возвращает время прошедшее с момента
значение           начала выполнения программы. Если время процессора
                   недоступно или   его   значение   не   может   быть
                   интерпретировано,  то  функция  возвращает значение
                   -1.

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

Смотрите также     time.

Пример:

#include <time.h>
#include <stdio.h>
#include <dos.h>

int main(void)
{
    clock_t start, end;
    start = clock();
    delay(2000);
    end = clock();
    printf("The time was: %f\n",
                   (end - start) / CLK_TCK);


close

[Справочник С/C++] - close

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

Синтаксис          #include<io.h>
                   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<string.h>
#include<fcntl.h>
#include<io.h>

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


closegraph

[Справочник С/C++] - closegraph

closegraph
Функция            Прекращает работу графической системы.

Синтаксис          #include <graphics.h>
                   void far closegraph(void)

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

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

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

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

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

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


clreol

[Справочник С/C++] - clreol

clreol
Функция            Удаляет до конца строки в текстовом окне.

Синтаксис          #include<conio.h>
                   void clreol(void);

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

Описание           clreol удаляет все символы от позиции курсора до
                   конца строки   в   текущем   текстовом   окне   без
                   перемещения курсора.

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

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

Смотрите также     clrscr, delline, window.

Пример:

#include<conio.h>
int main(void)
{
   clrscr();
   cprintf("Функция CLREOL обнуляет все символы, начиная\r\n");
   cprintf("от позиции курсора, до конца строки, внутри \r\n");
   cprintf("текущего текстового окна, без перемещения курсора.\r\n");
   cprintf("Для продолжения нажмите любую клавишу...");
   gotoxy(14,4);
   getch();
   clreol();
   getch();


clrscr

[Справочник С/C++] - clrscr

clrscr
Функция            Очищает окно в текстовом режиме.

Синтаксис          #include<conio.h>
                   void clrscr(void);

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

Описание           clrscr очищает текущее текстовое окно и перемещает
                   курсор в верхний левый угол экрана (в позицию 1,1).

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

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

Смотрите также     clreol, delline, window.

Пример:

#include<conio.h>
int main(void)
{
   int i;
   clrscr();
   for(i=0;i<20;i++)
     cprintf("%d\r\n",i);
   cprintf("\r\nДля очистки экрана нажмите любую клавишу");
   getch();
   clrscr();
   cprintf("Экран очищен!");
   getch();


complex

[Справочник С/C++] - complex

complex
Функция            Создает комплексные числа.

Синтаксис          #include<complex.h>
                   complex complex(double real,double imag);

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

Описание           Создает комплексное число из данных вещественной и
                   мнимой части.  Если параметр  imag  опускается,  то
                   мнимая  часть  считается  равной  0.

                   complex -   это  конструктор  класса  С++  complex,
                   который  определен  в  complex.h.  Другие  функции,
                   которые   также   позволяют   работать  с  complex,
                   приведены в разделе "Смотри  также".  Некоторые  из
                   этих стандартных функций переопределяются в math.h.
                   Для работы с  комплексными  версиями  этих  функций
                   требуется С++.

                   Если вы не желаете работать с С++,  а предпочитаете
                   с С, то вам доступны только конструкции типа struct
                   complex  и  cabs,  возвращающие абсолютное значение
                   комплексного числа.  Они  определены  в  math.h.

                   В complex.h,  кроме этого переопределяются операции
                   +,  -,  *,  /,  +=,  -=,  *=,  /=,  =, == и !=. Это
                   позволяет  использовать  с   комплексными   числами
                   обычные    операции.   В   выражениях   вы   можете
                   использовать вместе с комплексными числами,  целые,
                   вещественные  и  другие  числовые  типы.  Опереторы
                   потокового ввода/вывода << и >> переопределены  для
                   комплексных  чисел,  так  же  как  и  для остальных
                   чисел.

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

Переносимость      Комплексные функции требуют С++ и поэтому непере-
                   носимы. Поскольку мы следуем С++ AT&T  версии  2.0,
                   то  вы  можете  попробовать  комплексные функции на
                   других  компиляторах,  придерживающихся  этого   же
                   стандарта.

Смотрите также     abs, acos, arg, asin, atan, atan2, conj, cos, cosh,
                   imag, log, log10,  norm,  polar,  pow,  real,  sin,
                   sinh, sqrt, tan, tanh.

Пример:

#include<iostream.h>
#include<complex.h>

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"


conj

[Справочник С/C++] - conj

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

Синтаксис          #include<complex.h>
                   complex conj(complex x);

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

Описание           conj(z) аналогично complex(real(z), -imag(z)).

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

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

Смотри также       complex, imag, real.

Пример:

#include<iostream.h>
#include<complex.h>

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"


coreleft

[Справочник С/C++] - coreleft

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

Синтаксис          В моделях данных tiny, small, medium:
                   #include <alloc.h>
                   unsigned coreleft(void);

                   В моделях данных compact, large, huge:
                   #include <alloc.h>
                   unsigned long coreleft(void);

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

Описание           coreleft возвращает размер неиспользуемой
                   оперативной памяти.  Выводятся различные значения в
                   зависимости от модели памяти.

Возвращаемое       В малых моделях памяти coreleft возвращает
значение           количество неиспользуемой памяти между вершиной
                   heap и   стеком.  В  больших  моделях  памяти,  она
                   возвращает  объем  памяти   между   самым   верхним
                   выделенным блоком и концом оперативной памяти.

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

Смотрите также     allocmem, brk, farcoreleft, malloc

Пример:

#include<stdio.h>
#include<alloc.h>

int main(void)
{
   printf("Разница между самым верхним выделенным блоком и \n");
   printf("вершиной heap равна %lu байт",(unsigned long)coreleft());


cos

[Справочник С/C++] - cos

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

Синтаксис          Вещественная версия     Комплексная версия
                   #include <math.h>       #include<complex.h>
                   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, atan2, complex, matherr, sin,
                   tan.

Пример:

#include<stdio.h>
#include<math.h>

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


cosh

[Справочник С/C++] - cosh

cosh
Функция            Вычисляет гиперболический косинус.

Синтаксис          Вещественная версия     Комплексная версия
                   #include <math.h>       #include<complex.h>
                   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, atan2, complex, cos, matherr,
                   sin, sinh, tan, tanh.

Пример:

#include<stdio.h>
#include<math.h>

int main(void)
{
   double result;
   double x = 0.5;
   result = cosh(x);
   printf("Гиперболический косинус от %1f равен %1f\n",x,result);


country

[Справочник С/C++] - country

country
Функция            Возвращает информацию, зависимую от конкретной
                   страны.

Синтаксис          #include<dos.h>
                   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<dos.h>
#include<stdio.h>

#define USA 0

int main(void)
{
   struct country country_info;
   country(USA,&country_info);
   printf("Символ валюты США : %s\n",country_info.co_curr);


cprintf

[Справочник С/C++] - cprintf

cprintf
Функция            Осуществляет форматированный вывод на экран.

Синтаксис          #include<conio.h>
                   int cprintf(const char *format[,argument,...]);

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

Описание           cprintf получает набор аргументов, применяет к
                   каждому аргументу       спецификацию       формата,
                   содержащуюся  в строке формата с указателем format,
                   и  выводит  отформатированные  данные  на  экран  в
                   текущее   текстовое   окно.   Число   аргументов  и
                   спецификаций должно быть одинаковым.

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

                   Описание спецификации формата приведено  в  функции
                   printf.

                   В отличие  от функций fprintf и printf,  cprintf не
                   преобразует  символы   перевода   строки   (\n)   в
                   последовательность перевода каретки/перевода строки
                   (\r\n).

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

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

Смотрите также     directvideo(переменная), fprintf, printf, putch,
                   sprintf, vprintf.

Пример:

#include<conio.h>

int main(void)
{
   /* очистить экран */
   clrscr();
   /* создать текстовое окно */
   window(10,10,80,25);
   /* вывести в него некоторый текст */
   cprintf("Привет !!!\r\n");
   /* ждать нажатия клавиши */
   getch();


cputs

[Справочник С/C++] - cputs

cputs
Функция            Выводит строку на экран.

Синтаксис          #include<conio.h>
                   int cputs(const char * str);

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

Описание           cputs выводит строку str, заканчивающуюся нулем, в
                   текущее текстовое окно.  К строке не присоединяется
                   символ новой строки.

                   Строка выводится  напрямую  в  память  экрана   при
                   помощи  вызова  BIOS,  в  зависимости от значения в
                   directvideo.

                   В отличие от функции  puts,  cputs  не  преобразует
                   символы  перевода  строки (\n) в последовательность
                   перевода каретки/перевода строки (\r\n).

Возвращаемое       cputs возвращает последний выведенный символ.
значение

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

Смотрите также     cgets, directvideo(переменная), fputs, putch, puts.

Пример:

#include<conio.h>

int main(void)
{
   /* очистить экран */
   clrscr();
   /* создать текстовое окно */
   window(10,10,80,25);
   /* вывести в него некоторый текст */
   cputs("Вывод в окно \r\n");
   /* ждать нажатия клавиши */
   getch();


creat

[Справочник С/C++] - creat

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

Синтаксис          #include <sys\stat.h>
                   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, dup2, _fmode(переменная), fopen, open, sopen,
                   write.

Пример:

#include<sys\stat.h>
#include<process.h>
#include<string.h>
#include<stdio.h>
#include<fcntl.h>
#include<errno.h>
#include<io.h>

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


creatnew

[Справочник С/C++] - creatnew

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

Синтаксис          #include <dos.h>
                   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<string.h>
#include<stdio.h>
#include<errno.h>
#include<dos.h>
#include<io.h>

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


creattemp

[Справочник С/C++] - creattemp

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

Синтаксис          #include <dos.h>
                   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<string.h>
#include<stdio.h>
#include<io.h>

int main(void)
{
   int handle;
   char pathname[128];
   strcpy(pathname,"\\");
   /* создать уникальный файл в корневом каталоге */
   handle = creattemp(pathname,0);
   printf("Был создан файл %s\n",pathname);
   close(handle);


cscanf

[Справочник С/C++] - cscanf

cscanf
Функция            Выполняет форматированный ввод с консоли.

Синтаксис          #include<conio.h>
                   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<conio.h>

int main(void)
{
   char string(80);
   /* очистить экран */
   clrscr();
   /* запросить ввод от пользователя */
   cprintf("Введите строку:");
   /* считать строку */
   cscanf("%s",string);
   /* вывести введенную строку */
   cprintf("Вы ввели следующую строку: %s",string);


ctime

[Справочник С/C++] - ctime

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

Синтаксис          #include <time.h>
                   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<stdio.h>
#include<time.h>

int main(void)
{
   time_t t;
   t = time(NULL);
   printf("Сейчас: %s\n",ctime(&t));


ctrlbrk

[Справочник С/C++] - ctrlbrk

ctrlbrk
Функция            Устанавливает программу обработки Ctrl-Break.

Синтаксис          #include<dos.h>
                   void ctrlbrk(int(*handler)(void));

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

Описание           Функция ctrlbrk    устанавливает    новую   функцию
                   обработки прерываний,  адресный  указатель  которой
                   находится  в переменной handler.  Вектор прерывания
                   0x23 модифицируется для вызова названной функции.

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

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

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

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

Смотрите также     getcbrk, signal.

Пример:

#include <stdio.h>
#include <dos.h>

#define ABORT 0
int c_break(void)
{
   print("Нажато Control-Break. Выполнение программы завершается.\n");
   return(ABORT);
}

main()
{
   ctrlbrk(c_break);
   for (;;)
   {
      printf("Цикл ...\n");


delay

[Справочник С/C++] - delay

delay
Функция            Замораживает выполнение программы на интервал в
                   микросекундах.

Синтаксис          #include<dos.h>
                   void delay (unsigned milliseconds);

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

Описание           При вызове   функции   delay  выполнение  программы
                   приостанавливается    на    время,     определяемое
                   параметром      milliseconds.     Теперь     отпала
                   необходимость в калибровочном вызове  delay.  delay
                   отсчитывает интервал в миллисекундах.

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

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

Смотрите также     nosound, sleep, sound.

Пример:

/*   выдает звук с частотой 440 Гц в течение
     500 миллисекунд  */

#include <dos.h>

int main(void)
{
   sound(440);
   delay(500);
   nosound();


delline

[Справочник С/C++] - delline

delline
Функция            Удаляет строку в текстовом окне.

Синтаксис          #include<conio.h>
                   void delline(void);

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

Описание           delline удаляет строку, в которой находится курсор
                   и сдвигает все строки ниже данной  на  одну  вверх.
                   delline работает внутри текущего активного окна.

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

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

Смотрите также     clreol, clrscr, insline, window.

Пример:

#include<conio.h>

int main(void)
{
   clrscr();
   cprintf("Функция DELLINE удаляет строку, содержащую курсор\r\n");
   cprintf("и перемещает все строки, лежащие ниже ее, на одну\r\n");
   cprintf("строку вверх. DELLINE работает в текущем активном \r\n");
   cprintf("текстовом окне. Для продолжения нажмите клавишу...");
   gotoxy(1,2); /* переместить курсор на вторую строку */
   getch();
   delline();
   getch();


detectgraph

[Справочник С/C++] - detectgraph

detectgraph
Функция            Определяет графический драйвер и графический режим
                   при проверке аппаратуры.

Синтаксис          #include <graphics.h>
                   void far detectgraph (int far*graphdriver,
                      int far *graphmode);

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

Описание           detectgraph определяет  ваш  системный  графический
                   адаптер  и  выбирает  режим,  который  обеспечивает
                   самое высокое разрешение для этого  адаптера.  Если
                   графический   адаптер  не  обнаружен,  *graphdriver
                   устанавливается в  -2  и  graphresult  будет  также
                   возвращать -2 (grNotDetected).

                   *graphdriver -    целое,     которое     определяет
                   используемый графический драйвер.  Вы можете задать
                   его значение,  используя  константу  перечисляемого
                   типа graphics_drivers,  определенную в graphics.h и
                   приведенную в следующей таблице.

                   Таблица 2.1. Константы функции detectgrapf.
                   __________________________________________
                    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 и показанную в  следующей
                   таблице:

      Таблица 2.2. Информация графических драйверов.
      ----------------------------------------------------------------
      Графическ.  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.

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

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

Смотрите также     graphresult, initgraph.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/* Имена различных графических адаптеров */
char *gname[] = { "требуется определение",
                  "MCGA",
                  "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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* вывести полученную информацию */
clrscr();
printf("Установлена плата: %s",gname[graphdriver]);
printf("Для завершения нажмите любую клавишу...");
getch();


diftime

[Справочник С/C++] - diftime

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

Синтаксис          #include <time.h>
                   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<time.h>
#include<stdio.h>
#include<dos.h>
#include<conio.h>

int main(void)
{
   time_t first,second;
   clrscr();
   first = time(NULL); /* получить системное время */
   delay(2000);        /* задержка на 2000 миллисекунд */
   second = time(NULL);/* опять получить системное время */
   printf("Разница равна %f секунд",difftime(second,first);
   getch();


disable

[Справочник С/C++] - disable

disable
Функция            Запрещает прерывания.

Синтаксис          #include <dos.h>
                   void disable(void);

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

Описание           Данная макрокоманда разработана с целью обеспечения
                   программистов   гибким   средством   контроля   над
                   прерываниями на физическом уровне.

                   Макрокоманда disable        делает       прерывания
                   невозможными.  Разрешено только  прерывание  NMI  с
                   внешнего устройства (немаскируемое прерывание).

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

Переносимость      Данная макрокоманда уникальна для архитектуры 8086.

Смотрите также     getvect, enable.

Пример:

/* Замечание.
   Это программа  обработки прерывания.  Вы не cможете откомпилировать
   эту программу с включенной проверкой переполнения стека (Test Stack
   Overflow - On) и получить правильно работающую программу. */

#include<stdio.h>
#include<dos.h>
#include<conio.h>

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


div

[Справочник С/C++] - div

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

Синтаксис          #include <stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

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


dosexterr

[Справочник С/C++] - dosexterr

dosexterr
Функция            Получает дополнительный код ошибки DOS.

Cинтаксис          #include <dos.h>
                   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<stdio.h>
#include<dos.h>

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


dostounix

[Справочник С/C++] - dostounix

dostounix
Функция            Преобразует дату и время в формат системы UNIX.

Синтаксис          #include <dos.h>
                   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<time.h>
#include<stddef.h>
#include<dos.h>
#include<stdio.h>

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


drawpoly

[Справочник С/C++] - drawpoly

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

Синтаксис          #include <graphics.h>
                   void far drawpoly (int numpoints,
                                       int far *polypoints);

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

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

                   *polypoints указывает   на   последовательность  из
                   (numpoints x 2) целых чисел.  Каждая пара чисел x и
                   y является координатами вершины многоугольника.

                   Замечание. Для построения замкнутой фигуры, имеющей
                   n вершин,  необходимо задавать n+1 координату,  где
                   n-ная координатная пара равна 0-ой.

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

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

Смотрите также     fillpoly, floodfill, graphresult, setwritemode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


dup

[Справочник С/C++] - dup

dup
Функция            Дублирует дескриптор файла.

Синтаксис          #include<io.h>
                   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,
                   dup2, fopen, _open, open.

Пример:

#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<io.h>

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


dup2

[Справочник С/C++] - dup2

dup2
Функция            Дублирует дескриптор файла.

Синтаксис          #include<io.h>
                   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,
                   dup2, fopen, _open, open.

Пример:

#include<sys\stat.h>
#include<string.h>
#include<fcntl.h>
#include<io.h>
#include<stdio.h>
#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");


ecvt

[Справочник С/C++] - ecvt

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

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

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


ellipse

[Справочник С/C++] - ellipse

ellipse
Функция            Рисует эллиптическую дугу.

Синтаксис          #include <graphics.h>
                   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.

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

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

Смотрите также     arc, circle, fillellipse, getaspctratio, sector,
                   setaspectratio.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor(1));

/* рисует эллипс */
ellipse(midx,midy,stangle,endangle,xradius,yradius);

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


enable

[Справочник С/C++] - enable

enable
Функция            Разрешает прерывания.

Синтаксис          #include<dos.h>
                   void enable(void);

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

Описание           enable предназначена    для    гибкого   управления
                   прерываниями.

                   enable - макрокоманда разрешает прерывания.

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

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

Смотрите также     disable, getvect.

Пример:

#include<dos.h>

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


eof

[Справочник С/C++] - eof

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

Синтаксис          #include<io.h>
                   int eof(int handle);

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

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

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

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

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

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

Пример:

#include<process.h>
#include<string.h>
#include<stdio.h>
#include<io.h>

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


execl, execle, execlp, execv, execve, execvp, execvpe

[Справочник С/C++] - execl, execle, execlp, execv, execve, execvp, execvpe

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  и  e)
                   являются необязательными.

                   Например:

                   - 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.

Пример:

#include <stdio.h>
#include <stdlib.h>

main(int argc, char * argv[])
{
   int i;
   printf("Запущен дочерний процесс ...\n");
   printf("%s\n",getenv("PATH"));
   for (i=0; i<argc; i++)
      printf("argv[%d]: %s\n", 1, argv[i]);
}

#include<stdio.h>
#include<errno.h>
#include<dos.h>

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<process.h>
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#include<dos.h>

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<process.h>
#include<stdio.h>
#include<errno.h>
#include<dos.h>

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<process.h>
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>
#include<dos.h>

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<process.h>
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>
#include<dos.h>

void main(int argc,char **argv)
{
    printf("Запуск CHILD с arg1, arg2 ...\n");
    execv("CHILD.EXE",argv);
    perror("Ошибка EXEC");
    exit(1);
}

#include<process.h>
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>
#include<dos.h>

void main(int argc,char **argv,char **envp)
{
    printf("Запуск CHILD с arg1, arg2 ...\n");
    execve("CHILD.EXE",argv,envp);
    perror("Ошибка EXEC");
    exit(1);
}

#include<process.h>
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>
#include<dos.h>

void main(int argc,char **argv)
{
    printf("Запуск CHILD с arg1, arg2 ...\n");
    execvp("CHILD.EXE",argv);
    perror("Ошибка EXEC");
    exit(1);
}

#include<process.h>
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>
#include<dos.h>

int main(int argc,char **argv,char **envp)
{
    printf("Запуск CHILD с arg1, arg2 ...\n");
    execvpe("CHILD.EXE",argv,envp);
    perror("Ошибка EXEC");
    exit(1);


exit

[Справочник С/C++] - exit

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

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<conio.h>
#include<stdio.h>

int main(void)
{
   int status;
   printf("Нажмите клавишу 1 или 2\n");
   status = getch();
   exit(status-'0');
   return 0;  /* эта точка не достигается */


exp

[Справочник С/C++] - exp

exp
Функция            Функция экспоненты; возвращает значение е в степени
                   x.

Синтаксис          Вещественная версия       Комплексная версия
                   #include<math.h>          #include<complex.h>
                   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, log10, matherr,pow,
                   pow10, sqrt.

Пример:

#include<stdio.h>
#include<math.h>

int main(void)
{
   double result;
   double x = 4.0;
   result = exp(x);
   printf("'e' в степени %1f (e^%1f) = %1f\n",x,x,result);


fabs

[Справочник С/C++] - fabs

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

Синтаксис          #include<math.h>
                   double fabs(double x);

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

Описание           fabs вычисляет абсолютное значение х и возвращает
                   его как double.

Возвращаемое       fabs возвращает абсолютное значение х.
значение

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

Смотрите также     abs, cabs, labs.

Пример:

#include<stdio.h>
#include<math.h>

int main(void)
{
   float number = -1234.0;
   printf("число:%f, абсолютное значение %f\n",number,fabs(number));


farcalloc

[Справочник С/C++] - farcalloc

farcalloc
Функция            Выделяет блок памяти в глобальной динамической
                   области памяти.

Синтаксис          #include<alloc.h>
                   void far * farcalloc(unsigned long nunits,
                                       unsigned long unitsz);

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

Описание
                   Функция farcalloc  распределяет память в глобальной
                   динамической области памяти под  массив,  состоящий
                   из  nunits элементов,  причем каждый элемент длиной
                   unitsz байтов.

                   При распределении памяти в глобальной  динамической
                   области памяти помните следующее:

                   - Может  быть  выделена  вся  память с произвольной
                     выборкой (ЗУПВ).

                   - Могут быть выделены блоки, размером более 64К.

                   - Для  доступа  к  выделяемым  блокам  используются
                     "дальние" указатели (с атрибутом "far").

                   В моделях   памяти:  компактных,  больших  и  сверх
                   больших,  farcalloc соответствует calloc, однако не
                   идентична.   Она   использует  параметр  типа  long
                   unsigned, в то время, как обычные функции (например
                   malloc) используют параметры типа unsigned.

                   В модели   памяти  tiny  эту  функцию  использовать
                   нельзя.

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

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

Смотрите также     calloc, farcoreleft, farfree, farmalloc, malloc.

Пример:

#include<stdio.h>
#include<alloc.h>
#include<string.h>
#include<dos.h>

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


farcoreleft

[Справочник С/C++] - farcoreleft

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

Синтаксис          #include<alloc.h>
                   unsigned long farcoreleft(void);

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

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

                   В модели  памяти  tiny  эту  функцию   использовать
                   нельзя.

Возвращаемое       farcoreleft возвращает объем неиспользуемой памяти
значение           между самым верхним выделенным блоком и концом ОЗУ.

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

Смотрите также     coreleft, farcalloc, farmalloc.

Пример:

#include<stdio.h>
#include<alloc.h>

int main(void)
{
   printf("Объем неиспользуемой памяти в дальней области\n");
   printf("равен %lu байт \n",farcoreleft());


farfree

[Справочник С/C++] - farfree

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

Синтаксис          #include<alloc.h>
                   void farfree(void far * block);

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

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

                   В модели   памяти  tiny  эту  функцию  использовать
                   нельзя.

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

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

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

Смотрите также     farcalloc, farmalloc.

Пример:

#include<stdio.h>
#include<alloc.h>
#include<string.h>
#include<dos.h>

int main(void)
{
   char far *fptr;
   char *str = "Hello";
   /* выделить память */
   fptr = farcalloc(10,sizeof(char));

      /* скопировать строку "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);


farheapcheck

[Справочник С/C++] - farheapcheck

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

Синтаксис          #include<alloc.h>
                   int farheapcheck(void);

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

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

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

                   Если нет глобальной динамической области памяти, то
                   возвращается    значение   _HEAPEMPTY   (1).

                   Если глобальный       heap       проверен,       то
                   возвращается_HEAPOK (2).

                   Если память     запорчена,     то      возвращается
                   _HEAPCORRUPT (-1).

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

Смотрите также     heapcheck.

Пример:

#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   char far *array[NUM_PTRS];
   int i;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = farmalloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     farfree(array[i]);
   if(farheapcheck() == _HEAPCORRUPT)
     printf(" Память запорчена\n");
   else
     printf("Все нормально\n");


farheapcheckfree

[Справочник С/C++] - farheapcheckfree

farheapcheckfree
Функция            Проверяет свободные блоки в глобальной динамической
                   области памяти на констнтное значение.

Синтаксис          #include<alloc.h>
                   int farheapcheckfree(unsigned int fillvalue);

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

Описание           ????????????????

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

                   Если нет глобальной динамической области памяти, то
                   возвращается значение _HEAPEMPTY (1).

                   Если глобальный   heap  проверен,  то  возвращается
                   _HEAPOK (2).

                   Если память     запорчена,     то      возвращается
                   _HEAPCORRUPT(-1).

                   Если зачение заполнения отличается от fillvalue, то
                   возвращается _BADVALUE (-3).

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

Смотрите также     farheapfillfree, heapcheckfree.

Пример:

#include<mem.h>
#include<stdio.h>
#include<alloc.h>

#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<NUM_PTRS; i++)
     if((array[i] = farmalloc(NUM_BYTES))==NULL)
        {
         printf("Не хватает памяти\n");
         return 1;
        }
   for(i=0; i<NUM_PTRS; i+=2)
     farfree(array[i]);
   if(farheapfillfree(1) < 0)
   {
     printf(" Память запорчена\n");
     return 1;
   }
   for(i=0; i<NUM_PTRS; i+=2)
     for(j=0; j<NUM_BYTES; j++)
        array[i][j]=0;
   res = farheapcheckfree(1);
   if(res<0)
      switch(res)
      {
      case _HEAPCORRUPT:
           printf(" Память запорчена\n");
           return 1;
      case _BADVALUE:
           printf("Неверное содержимое пустой памяти \n");
           return 1;
      default:
           printf(" Нераспознаваемая ошибка\n");
           return 1;
      }
   printf("Все нормально\n");


farheapchecknode

[Справочник С/C++] - farheapchecknode

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

Синтаксис          #include<alloc.h>
                   int farheapchecknode(void *node);

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

Описание
                   Если узел   был   освобожден   и   farheapchecknode
                   вызывается с указателем на освобожденный  узел,  то
                   farheapchecknode  может  вернуть значение _BADNODE,
                   вместо предполагаемого _FREEENTRY.  Это  происходит
                   потому,  что  соседние  свободные блоки сливаются и
                   блок,  указанный  при  вызове  функции,  больше  не
                   существует.

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

                   Если нет глобальной динамической области памяти, то
                   возвращается значение _HEAPEMPTY (1).

                   Если память      запорчена,     то     возвращается
                   _HEAPCORRUPT(-1).

                   Если узел не найден, то возвращается _BADNODE (-2).

                   Если узел освобожден,  то  возвращается  _FREEENTRY
                   (3).

                   Если узел,  это используемый блок,  то возвращается
                   _USEDENTRY (4).

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

Смотрите также     heapchecknode.

Пример:

#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   char far *array[NUM_PTRS];
   int i;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = farmalloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     farfree(array[i]);
   for(i=0; i<NUM_PTRS; i++)
   {
      printf("Узел %2d",i);
      switch(farheapchecknode(array[i]))
      {
         case _HEAPEMPTY:
             printf(" Нет памяти\n");
             break;
         case HEAPCORRUPT:
             printf(" Память запорчена\n");
             break;
         case _BADNODE:
             printf(" Неверный узел\n");
             break;
         case _FREEENTRY:
             printf(" Свободный блок\n");
             break;
         case _USEDENTRY:
             printf(" Занятый блок\n");
             break;
         default:
             printf(" Неизвестное возвращаемое значение\n");
             break;
     }


farheapfillfree

[Справочник С/C++] - farheapfillfree

farheapfillfree
Функция            Заполняет свободные  блоки  глобальной динамической
                   области памяти константным значением.

Синтаксис          #include<alloc.h>
                   int farheapfillfree(unsigned int fillvalue);

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

Описание           ????????????????

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

                   Если нет глобальной динамической области памяти, то
                   возвращается значение _HEAPEMPTY (1).

                   Если глобальный   heap  проверен,  то  возвращается
                   _HEAPOK (2).

                   Если память     запорчена,     то      возвращается
                   _HEAPCORRUPT(-1).

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

Смотрите также     farheapcheckfree, heapfillfree

Пример:

#include<mem.h>
#include<stdio.h>
#include<alloc.h>

#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<NUM_PTRS; i++)
     (array[i] = farmalloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     farfree(array[i]);
   if(heapfillfree(1) < 0)
   {
     printf(" Память запорчена\n");
     return 1;
   }
   for(i=0; i<NUM_PTRS; i+=2)
     for(j=0; j<NUM_BYTES; j++)
        array[i][j]=0;
   res = farheapcheckfree(1);
   if(res<0)
      switch(res)
      {
      case _HEAPCORRUPT:
           printf(" Память запорчена\n");
           return 1;
      case _BADVALUE:
           printf("Неверное содержимое пустой памяти \n");
           return 1;
      default:
           printf(" Нераспознаваемая ошибка\n");
           return 1;
      }
   printf("Все нормально\n");


farheapwalk

[Справочник С/C++] - farheapwalk

farheapwalk
Функция            Используется для перемещения по глобальному heap
                   от узла к узлу.

Синтаксис          #include<alloc.h>
                   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 - это флаг, который
                   устанавливается,  если  этот  блок  используется  в
                   настоящий момент.

Возвращемое        Если нет глобальной динамической области памяти, то
значение           возвращается значение _HEAPEMPTY (1).

                   Если структура heapinfo содержит верные данные,  то
                   возвращается _HEAPOK (2).

                   Если достигнут  конец heap памяти,  то возвращается
                   _HEAPEND (5).

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

Смотрите также     heapwalk.

Пример:

#include<stdio.h>
#include<alloc.h>

#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<NUM_PTRS; i++)
     array[i] = farmalloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     farfree(array[i]);
   hi.ptr = NULL;
   printf("   Размер      Статус   \n");
   printf("   ------      ------   \n");
   while(farheapwalk(&hi) == _HEAROK)
      if(hi.in_use)
          printf("%7u     используется\n",hi.size);
      else
          printf("%7u     свободен\n",hi.size);


farmalloc

[Справочник С/C++] - farmalloc

farmalloc
Функция            Размещает данные  в глобальной динамической области
                   памяти.

Синтаксис          #include<alloc.h>
                   void far * farmalloc(unsigned long nbytes);

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

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

                   При выделении блока глобальной динамической области
                   памяти вы должны помнить следующее:

                   - Может  быть  выделена  вся  память с произвольной
                     выборкой (ЗУПВ).

                   - Могут быть выделены блоки, размером более 64К.

                   - Для  доступа  к  выделяемым  блокам  используются
                     "дальние" указатели (с атрибутом "far").

                   В моделях   памяти:  компактных,  больших  и  сверх
                   больших,   функция   соответствует,    однако    не
                   идентична,  malloc. Она получает параметр типа long
                   unsigned,  в  то  время,  как   malloc   использует
                   параметр типа unsigned.

                   В модели   памяти  tiny  эту  функцию  использовать
                   нельзя.

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

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

Смотрите также     farcalloc, farcoreleft, farfree, farrealloc, malloc.

Пример:

#include<stdio.h>
#include<alloc.h>
#include<string.h>
#include<dos.h>

int main(void)
{
   char far *fptr;
   char *str = "Hello";
   /* выделить память */
   fptr = farmalloc(10);

      /* скопировать строку "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);


farrealloc

[Справочник С/C++] - farrealloc

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

Синтаксис          #include<alloc.h>
                   void far * farrealloc(void far * oldblock,
                                         unsigned long nbytes);

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

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

                   При распределении  глобальной  динамической области
                   памяти помните следующее:

                   - Может быть выделена  вся  память  с  произвольной
                     выборкой (ЗУПВ).

                   - Могут быть выделены блоки, размером более 64К.

                   - Для  доступа  к  выделяемым  блокам  используются
                     "дальние" указатели (с атрибутом "far").

                   В модели  памяти  tiny  эту  функцию   использовать
                   нельзя.

Возвращаемое       Функция farrealloc возвращает указатель на
значение           новый выделенный блок, который может отличаться
                   от исходного.  Если  для размещения нового блока не
                   хватило памяти,  то функция  farrealloc  возвращает
                   NULL.

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

Смотрите также     farmalloc, realloc.

Пример:

#include<stdio.h>
#include<alloc.h>

int main(void)
{
   char far *fptr;
   fptr = farmalloc(10);
   printf("Адрес первого блока:%Fp\n",fptr);
   fptr = farrealloc(20);
   printf("Адрес второго блока:%Fp\n",fptr);
   farfree(fptr);


fclose

[Справочник С/C++] - fclose

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

Синтаксис          #include <stdio.h>
                   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<string.h>
#include<stdio.h>

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");


fcloseall

[Справочник С/C++] - fcloseall

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

Синтаксис          #include<stdio.h>
                   int fcloseall(void);

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

Описание           Функция fcloseall закрывает все открытые потоки,
                   исключая stdin и stdout, stdprn, stdaux и strerr.

Возвращаемое       fcloseall возвращает число закрытых потоков. При
значение           возникновении ошибки возвращает EOF.

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

Смотрите также     fclose, fdopen, flushall, fopen, freopen.

Пример:

#include<stdio.h>

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


fcvt

[Справочник С/C++] - fcvt

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

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

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


fdopen

[Справочник С/C++] - fdopen

fdopen
Функция            Связывает поток с логическим номером файла.

Синтаксис          #include<stdio.h>
                   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<sys\stat.h>
#include <stdio.h>
#include <fcntl.h>
#include<io.h>

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


feof

[Справочник С/C++] - feof

feof
Функция            Обнаруживает конец файла (EOF) в потоке.

Синтаксис          #include<stdio.h>
                   int feof(FILE * stream);

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

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

                   Признак конца   файла   сбрасывается   при   каждой
                   операции ввода.

Возвращаемое
значение           Функция feof возвращает ненулевое значение, если
                   при последней  операции  ввода  потока  stream  был
                   обнаружен конец файла, и 0 в противном случае.

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

Смотрите также     clearerr, eof, ferror, perror.

Пример:

#include <stdio.h>

int main(void)
{
   FILE *stream;
   char ch;

   /* открыть файл для чтения */
   stream = fopen("DUMMY.FIL", "r");
   /* ввести из файла символ */
   ch = fgetc(stream);
   /* конец файла? */
   if(feof(stream))
      printf("Конец файла\n");
   /* закрыть файл */
   fclose(stream);


ferror

[Справочник С/C++] - ferror

ferror
Функция            Обнаруживает ошибки в потоке.

Синтаксис          #include<stdio.h>
                   int ferror(FILE * stream);

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

Описание           Функция ferror  является   макрокомандой,   которая
                   проверяет данный поток stream на ошибочную операцию
                   записи или чтения.  Если установлен признак  ошибки
                   потока  stream,  он сохраняет его до вызова функций
                   clearerr или rewind или до момента закрытия потока.

Возвращаемое       Функция ferror возвращает ненулевое значение, если
значение           в потоке stream была обнаружена ошибка.

Переносимость      Данная функция поддерживается на системах UNIX и
                   совместима со стандартом ANSI C.

Смотрите также     clearerr, eof, feof, fopen, gets, perror.

Пример:

#include <stdio.h>

int main(void)
{
   FILE *stream;
   char ch;

   /* открыть файл для записи */
   stream = fopen("DUMMY.FIL", "w");
   /* справоцировать ошибку */
   ch = fgetc(stream);
   /* конец файла? */
   if(ferror(stream))
   {
      /* вывести сообщение об ошибке */
      printf("Ошибка чтения\n");
      /* сбросить признак ошибки */
      clearerr(stream);
   }
   fclose(stream);


fflush

[Справочник С/C++] - fflush

fflush
Функция            Сбрасывает поток.

Синтаксис          #include<stdio.h>
                   int fflush(FILE * stream);

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

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

                   fflush не  оказывает  влияния  на  небуферизованные
                   потоки.

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

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

Смотрите также     fclose, flushall, setbuf, setvbuf.

Пример:

#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<io.h>

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


fgetc

[Справочник С/C++] - fgetc

fgetc
Функция            Получает символ из потока.

Синтаксис          #include<stdio.h>
                   int fgetc(FILE * stream);

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

Описание           fgetc возвращает  следующий  символ  из  указанного
                   входного потока stream.

Возвращаемое       При успешном завершении возвращает символ, преоб-
значение           разованный к типу int без расширения знака. При
                   обнаружении конца файла возвращает EOF.

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

Смотрите также     fgetchar, fputc, getc, getch, getchar, getche,
                   ungetc, ungetch.

Пример:

#include<string.h>
#include<stdio.h>
#include<conio.h>

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


fgetchar

[Справочник С/C++] - fgetchar

fgetchar
Функция            Получает символ из потока stdin.

Синтаксис          #include<stdio.h>
                   int fgetchar(void);

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

Описание           fgetchar возвращает следующий символ из потока
                   stdin. Определяется как fgetc(stdin).

Возвращаемое       При успешном завершении возвращает символ, преоб-
значение           разованный к типу int без расширения знака. При
                   обнаружении конца файла или ошибки возвращает EOF.

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

Смотрите также     fgetc, fputchar, getchar.

Пример:

#include<stdio.h>

int main(void)
{
   char ch;
   /* запрос ввода */
   printf("Введите символ, затем нажмите <Enter>.\n");
   /* ввести символ из потока stdin */
   ch = fgetchar();
   /* напечатать введенный символ */
   printf(" Считан символ: '%c'\n",ch);


fgetpos

[Справочник С/C++] - fgetpos

fgetpos
Функция            Возвращает положение указателя  текущей  позиции  в
                   файле.

Синтаксис          #include<stdio.h>
                   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<string.h>
#include<stdio.h>

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


fgets

[Справочник С/C++] - fgets

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

Синтаксис          #include<stdio.h>
                   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<string.h>
#include<stdio.h>

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


filelength

[Справочник С/C++] - filelength

filelength
Функция            Получает размер файла в байтах.

Синтаксис          #include<io.h>
                   long filelength(int handle);

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

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

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

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

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

Смотрите также     fopen, lseek, open.

Пример:

#include<stdio.h>
#include<io.h>
#include<fcntl.h>
#include<sys\stat.h>
#include<string.h>

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


fileno

[Справочник С/C++] - fileno

fileno
Функция            Получает дескриптор файла.

Синтаксис          #include<stdio.h>
                   int fileno(FILE * stream);

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

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

Возвращаемое       fileno возвращает целое число, обозначающее
значение           дескриптор файла, соответствующий потоку stream.

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

Смотрите также     fdopen, fopen, freopen.

Пример:

#include<stdio.h>

int main(void)
{
   FILE *stream;
   int handle;
   /* создать файл */
   stream = fopen("DUMMY.FIL","w");
   /* получить дескриптор файла */
   handle = fileno(stream);
   /* напечатать его */
   printf("Дескриптор файла = %d\n",handle);
   /* закрыть файл */
   fclose(stream);


fillellipse

[Справочник С/C++] - fillellipse

fillellipse
Функция            Рисует и закрашивает эллипс.

Синтаксис          #include <graphics.h>
                   void far ellipse(int x,int y,int xradius,
                                     int yradius);

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

Описание           Рисует эллипс   с   центром   в   точке   (x,y)   и
                   горизонтальной  и  вертикальной  осями  xradius   и
                   yradius соответственно,  и закрашивает его текущими
                   цветом закраски, используя текущий шаблон.

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

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

Смотрите также     arc, circle, ellipse, getaspectratio, pieslices,
                   setaspectraio.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* цикл по шаблонам */
for(i=EMPTY_FILL; i<USER_FILL; i++)
{
   /* определить шаблон */
   setfillpattern(i,getmaxcolor(1));
   /* нарисовать заполненный эллипс */
   fillellipse(midx,midy,xradius,yradius);
   getch();
}
/* очистка */
closegraph();


fillpoly

[Справочник С/C++] - fillpoly

fillpoly
Функция            Рисует и закрашивает многоугольник.

Синтаксис          #include <graphics.h>
                   void far fillpoly (int numpoints,
                                       int far *polypoints);

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

Описание           fillpoly рисует   контур   многоугольника  ,имеющий
                   numpoints точек, используя текущий вид линии и цвет
                   (так   же,   как   это   делает  drawpoly),а  затем
                   закрашивает многоугольник текущим цветом закраски и
                   с помощью текущего шаблона.

                   polypoints указывает   на   последовательность   из
                   (numpoints x 2) целых чисел.  Каждая пара чисел x и
                   y является координатами вершины многоугольника.

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

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

Смотрите также     drawpoly, floodfill, graphresult, setfillstyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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<USER_FILL; i++)
{
   /* определить шаблон */
   setfillpattern(i,getmaxcolor(1));
   /* рисует заполненный многоугольник */
   fillpoly(5,poly);
   getch();
}

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


findfirst

[Справочник С/C++] - findfirst

findfirst
Функция            Просматривает каталог диска.

Синтаксис          #include<dir.h>
                   #include<dos.h>
                   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 - Маршрут доступа или имя файла не найдены.

                   а переменной   doserrno   присваивается   одно   из
                   следующих значений:

                   ENOENT - Маршрут доступа или имя файла не найдены.
                   ENMFILE - Нет больше файлов.

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

Смотрите также     findnext.

Пример:

#include <stdio.h>
#include <dir.h>

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


findnext

[Справочник С/C++] - findnext

findnext
Функция            Продолжает просмотр, начатый функцией findfirst.

Синтаксис          #include <dir.h>
                   int fidtnext(struct ffblk * ffblk);

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

Описание           Функция findnext     используется    для    выборки
                   последовательности     файлов,      соответствующих
                   параметру pathname, задаваемому функцией findfirst.
                   ffblk - это тот же самый блок,  который заполняется
                   при вызове функции findfirst.  Данный блок содержит
                   всю необходимую информацию для продолжения  поиска.
                   При    каждом   вызове   функции   findnext   будет
                   возвращаться одно имя файла до тех пор, пока файлы,
                   соответствующие параметру, pathname не закончатся.

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

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

                   а переменной   doserrno   присваивается   одно   из
                   следующих значений:

                   ENOENT - Маршрут доступа или имя файла не найдены.
                   ENMFILE - Нет больше файлов.

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

Смотрите также     findfirst.

Пример:

#include <stdio.h>
#include <dir.h>

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


floodfill

[Справочник С/C++] - floodfill

floodfill
Функция            Заполняет ограниченную область.

Синтаксис          #include <graphics.h>
                   void far floodfill(int x, int y
                                       int border);

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

Описание           floodfill заполняет    ограниченную    область   на
                   устройствах  с  побитовым  отображением.  (x,y)   -
                   произвольная  точка  внутри  закрашиваемой области.
                   Область,   граница    которой    окрашена    цветом
                   border,заполняется   текущим   цветом   закраски  и
                   шаблоном.  Если указанная  точка  находится  внутри
                   ограниченной  области,то  окрашивается  область,  а
                   если  снаружи,  то  закрашивается   все   поле   за
                   пределами области.

                   Используйте, если  это  возможно,  fillpoly  вместо
                   floodfill.    Это   позволит   обеспечить   кодовую
                   совместимость с будущими версиями.

                   Замечание. floodfill  не   работает   с   драйвером
                   IBM-8514.

Возвращаемое       Если в процессе заполнения области возникла
значение           ошибка, то graphresult возвращает значение -7.

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

Смотрите также     drawpoly, fillpoly, graphresult, setcolor,
                   setfillstyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


floor

[Справочник С/C++] - floor

floor
Функция            Округление в меньшую сторону.

Синтаксис          #include<math.h>
                   double floor(double x);

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

Описание           Функция floor находит наибольшее целое число не
                   превышающее значение x.

Возвращаемое       Функция возвращает найденное целое число.
значение           (как double).

Переносимость      Функция поддерживаются системой UNIX и стандартом
                   ANSI C.

Смотрите также     ceil, fmod.

Пример:

#include<math.h>
#include<stdio.h>
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);


flushall

[Справочник С/C++] - flushall

flushall
Функция            Сбрасывает буфера всех потоков.

Синтаксис          #include<stdio.h>
                   int flushall(void);

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

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

                   Все потоки остаются открытыми.

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

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

Смотрите также     fclose, fcloseall, fflush.

Пример:

#include<stdio.h>

int main(void)
{
   FILE *stream;
   /* создать файл */
   stream = fopen("DUMMY.FIL","w");
   /* сбросить все открытые потоки */
   printf("Сброшено %d потоков\n",flushall());
   /* закрыть файл */
   fclose(stream);


fmod

[Справочник С/C++] - fmod

fmod
Функция            Вычисляет x по модулю y, то есть остаток от деления
                   нацело x/y.

Синтаксис          #include<math.h>
                   double fmod(double x, double y);

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

Описание           Функция fmod  вычисляет  x  по  модулю  y  (то есть
                   остаток f,  удовлетворяющий  равенству  x=iy+f  для
                   целого i и 0<=f<y).

Возвращаемое       Функция fmod возвращает остаток f, где x=iy+f
значение           (как описано выше). При y=0, fmod также возвращает
                   0.

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

Смотрите также     ceil, floor, modf.

Пример:

#include<math.h>
#include<stdio.h>

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


fnmerge

[Справочник С/C++] - fnmerge

fnmerge
Функция            Создает новое имя файла из отдельных частей.

Синтаксис          #include <dir.h>
                   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.

                   Функции fnmerge и fnsplit взаимообратны.  Если вы с
                   помощью функции fnsplit разделите на части  маршрут
                   доступа path, а затем сольете полученные компоненты
                   с помощью функции fnmerge,  то  вы  снова  получите
                   маршрут доступа path.

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

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

Смотрите также     fnsplit.

Пример:

#include<string.h>
#include<stdio.h>
#include <dir.h>

int main(void)
{
    char drive[MAXDRIVE];
    char dir[MAXDIR];
    char file[MAXFILE];
    char ext[MAXEXT];
    char s[MAXPATH];
    getcwd(s,MAXPATH);  /* получить текущий рабочий каталог */
    strcat(s,"\\");     /* добавить символ \ */
    fnsplit(s,drive,dir,file,ext); /* разделить маршрут */
    strcpy(file,"DATA");
    strcpy(ext,".TXT");
    fnmerge(s,drive,dir,file,ext);
    puts(s);


fnsplit

[Справочник С/C++] - fnsplit

fnsplit
Функция            Разделяет полное имя файла на компоненты.

Синтаксис          #include <dir.h>
                   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, и т.д.).

                   Функции fnmerge и fnsplit взаимообратны.  Если вы с
                   помощью  функции fnsplit разделите на части маршрут
                   доступа path, а затем сольете полученные компоненты
                   с  помощью  функции  fnmerge,  то вы снова получите
                   маршрут доступа path.

Возвращаемое       Функция fnsplit возвращает целое число (составлен-
значение           ное из 5-ти флагов, описанных в файле dir.h), ко-
                   торое показывает,  какие компоненты  полного  имени
                   файла присутствуют в path;  далее перечислены флаги
                   и компоненты, которые они обозначают:

                   EXTENSION - расширение имени файла;
                   FILENAME  - имя файла;
                   DIRECTORY - каталог (и возможно подкаталоги);
                   DRIVE     - спецификация дисковода (смотрите
                               файл dir.h);
                   WILDCARD  - шаблоны (* или?).

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

Смотрите также     fnmerge.

Пример:

#include<string.h>
#include<stdio.h>
#include <dir.h>

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


fopen

[Справочник С/C++] - fopen

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

Синтаксис          #include <stdio.h>
                   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 <stdio.h>

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


FP_OFF

[Справочник С/C++] - FP_OFF

FP_OFF
Функция            FP_OFF -  получает   смещение   "дальнего"   адреса
                   (адреса с атрибутом "far").

Синтаксис          #include <dos.h>
                   unsigned FP_OFF(void far *p);

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

Описание           Макрокоманда FP_OFF  используется для получения или
                   установки адресного смещения указателя с  атрибутом
                   "far".

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

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

Смотрите также     FP_SEG, MK_FP, movedata, segread.

Пример:

#include<dos.h>
#include<stdio.h>

int main(void)
{
   char *str = "fpoff.c";
   printf(" Смещение этой строки равно %X\n",FP_OFF(str));


FP_SEG

[Справочник С/C++] - FP_SEG

FP_SEG
Функция            Получает адрес   сегмента   с    атрибутом    "far"
                   (дальний).

Синтаксис          #include <dos.h>
                   unsigned FP_SEG(void far *p);

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

Описание           Макрокоманда FP_SEG  используется для получения или
                   установки значения адреса  сегмента  для  адресного
                   указателя с атрибутом "far".

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

Смотрите также     FP_OFF, MK_FP, movedata, segread.

Пример:

#include<dos.h>
#include<stdio.h>

int main(void)
{
   char *str = "fpoff.c";
   printf(" Адрес сегмента этой строки равно %X\n",FP_SEG(str));


fprintf

[Справочник С/C++] - fprintf

fprintf
Функция            Посылает форматированный вывод в поток.

Синтаксис          #include <stdio.h>
                   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<stdio.h>

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


fputc

[Справочник С/C++] - fputc

fputc
Функция            Выводит символ в поток.

Синтаксис          #include <stdio.h>
                   int fputc(int c, FILE * stream);

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

Описание           Функция fputc выводит символ с в поток stream.

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

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

Смотрите также     fgetc,putc.

Пример:

#include<stdio.h>
int main(void)
{
   char msg[] = "Здравствуй мир";
   int i=0;
   while(msg[i])
   {
      fputc(msg[i],stdout);
      i++;


fputchar

[Справочник С/C++] - fputchar

fputchar
Функция            Выводит символ в поток stdout.

Синтаксис          #include <stdio.h>
                   int fputchar(int c);

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

Описание           Функция fputchar выводит символ с в поток stdout.
                   fputchar(c) определяется как fputc(c,stdout).

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

Переносимость      Cовместима с системой UNIX.

Смотрите также     fgetchar,putchar.

Пример:

#include<stdio.h>
int main(void)
{
   char msg[] = "Тестовый пример";
   int i=0;
   while(msg[i])
   {
      fputchar(msg[i]);
      i++;


fputs

[Справочник С/C++] - fputs

fputs
Функция            Выводит строку символов в поток.

Синтаксис          #include <stdio.h>
                   int fputs(char * string, FILE * stream);

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

Описание           Функция fputs копирует строку, ограниченную нулевым
                   байтом  в  поток  stream.  Она не добавляет в конец
                   строки символ перехода на новую строку и не выводит
                   нулевой символ.

Возвращаемое       При успешном завершении fputs возвращает последний
значение           выведенный символ. В противном случае возвращает
                   EOF.

Переносимость      fputs поддерживается системой UNIX и стандартом
                   ANSI C.   Кроме  этого  определена  в  Kernighan  &
                   Ritchie.

Cмотрите также     fgets, gets, puts.

Пример:

#include<stdio.h>

int main(void)
{
   /* вывести строку в поток */
   fputs("Тестовый пример",stdout);


fread

[Справочник С/C++] - fread

fread
Функция            Считывает данные из потока.

Синтаксис          #include <stdio.h>
                   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<string.h>
#include<stdio.h>

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


free

[Справочник С/C++] - free

free
Функция            Освобождает память, выделенную под блок.

Синтаксис          #include<alloc.h>
                   void free(void *block);

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

Описание           free освобождает блок памяти, выделенный функциями
                   calloc, malloc или realloc.

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

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

Смотрите также     calloc, freemem, malloc, realloc, strdup.

Пример:

#include<string.h>
#include<stdio.h>
#include<alloc.h>

int main(void)
{
   char *str;
   /* выделить память под строку */
   str = malloc(10);
   /* скопировать в строку "Hello" */
   strcpy(str,"Hello");
   /* вывести строку */
   printf("Строка: %s\n",str);
   /* освободить память */
   free(str);


freemem

[Справочник С/C++] - freemem

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

Синтаксис          #include<dos.h>
                   int freemem(unsigned seg);

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

Описание           freemem освобождае    блок    памяти     выделенный
                   предшествовавшим  вызовом  allocmem.  seg  -  адрес
                   сегмента выделенного блока.

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

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

Смотрите также     allocmem, free.

Пример:

#include<dos.h>
#include<alloc.h>
#include<stdio.h>

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


freopen

[Справочник С/C++] - freopen

freopen
Функция            Связывет с потоком новый файл.

Синтаксис          #include <stdio.h>
                   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<stdio.h>

int main(void)
{
   /* перенаправить стандартный вывод в файл */
   if(freopen("OUTPUT.FIL","w",stdout) == NULL)
     fprintf(stderr,"Ошибка перенаправления потока\n");
   /* этот вывод будет осуществляться в файл */
   printf("этот вывод будет осуществляться в файл\n");
   /* закрыть стандартный вывод */
   close(stdout);


frexp

[Справочник С/C++] - frexp

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

Синтаксис          #include<math.h>
                   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<math.h>
#include<stdio.h>

int main(void)
{
   double mantissa,number;
   int exponent;
   number = 8.0;
   mantissa = frexp(number,&exponent);
   printf("Число %1f равно %1f умножить на 2 в степени %d\n",
         number,mantissa,exponent);


fscanf

[Справочник С/C++] - fscanf

fscanf
Функция            Выполняет форматированный ввод из потока.

Синтаксис          #include <stdio.h>
                   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<stdlib.h>
#include<stdio.h>

int main(void)
{
   int i;
   printf("Введите целое число:");
   /* ввести из стандартного потока stdout целое число */
   if(fscanf(stdin,"%d",&i))
     printf("Целое равно:%d\n",i);
   else
    {
     fprintf(stderr,"Ошибка чтения целого\n");
     exit(1);


fseek

[Справочник С/C++] - fseek

fseek
Функция            Устанавливает указатель файла в потоке.

Синтаксис          #include <stdio.h>
                   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 <stdio.h>
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);


fsetpos

[Справочник С/C++] - fsetpos

fsetpos
Функция            Позиционирует указатель текущей позиции в файле,
                   связанном с потоком stream.

Синтаксис          #include<stdio.h>
                   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<stdlib.h>
#include<stdio.h>

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


fstat

[Справочник С/C++] - fstat

fstat
Функция            Получает информацию об открытом файле.

Синтаксис          #include <sys\stat.h>
                   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<sys\stat.h>
#include<stdio.h>
#include<time.h>

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


ftell

[Справочник С/C++] - ftell

ftell
Функция            Возвращает положение указателя текущей позиции
                   файла.

Синтаксис          #include <stdio.h>
                   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<stdio.h>

int main(void)
{
   FILE *stream;
   stream = fopen("DUMMY.FIL","w+");
   fprintf(stream,"Это тест");
   printf("Указатель файла: %ld\n",ftell(stream));


ftime

[Справочник С/C++] - ftime

ftime
Функция            Помещает текущее время в структуру типа timeb.

Синтаксис          #include<sys\timeb.h>
                   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<stdio.h>
#include<stdio.h>
#include<time.h>
#include<sys\timeb.h>

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 ? "":"не");


fwrite

[Справочник С/C++] - fwrite

fwrite
Функция            Записывает данные в поток.

Синтаксис          #include <stdio.h>
                   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<stdio.h>

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


gcvt

[Справочник С/C++] - gcvt

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

Синтаксис          #include <stdlib.h>
                   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, sprintf.

Пример:

#include<stdlib.h>
#include<stdio.h>

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


geninterrupt

[Справочник С/C++] - geninterrupt

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

Синтаксис          #include <dos.h>
                   void geninterrupt(int intr_num);

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

Описание           Эта макрокоманда вызывает программное прерывание с
                   номером,    определяемым    intr_num.    Состояние
                   регистров  после  вызова  прерывания  зависит   от
                   программы обработки этого прерывания.

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

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

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

Смотрите также     bdos, bdosptr, disable, enable, getvect, int86,
                   int86x, intdos, intdosx, intr.

Пример:

#include<conio.h>
#include<dos.h>

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); /* вывод символа */


getarccoords

[Справочник С/C++] - getarccoords

getarccoords
Функция            Выдает координаты последнего обращения к функции
                   arc.

Синтаксис          #include <graphics.h>
                   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) позиций дуги.Эти
                   значения могут быть использованы если необходимо ,
                   чтобы линии пересекались на конце дуги.

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

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

Смотрите также     arc, fillellipse, sector.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getaspectratio

[Справочник С/C++] - getaspectratio

getaspectratio
Функция            Возвращает текущее   характеристическое  отношение
                   (отношение  ширины  изображения  к   его   высоте)
                   графического режима.

Синтаксис          #include <graphics.h>
                   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.
                   Функция не совместима с Windows.

Смотрите также     arc, circle, ellipse, fillellipse, pie-
                   slices, sector, setaspectratio.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


getbkcolor

[Справочник С/C++] - getbkcolor

getbkcolor
Функция            Возвращает текущий цвет фона.

Синтаксис          #include <graphics.h>
                   int far getbkcolor(void);

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

Описание           getbkcolor возвращает текущий цвет  фона.  (cмотри
                   подробности в таблице под setbkcolor.)

Возвращаемое       getbkcolor возвращает текущий цвет фона.
значение

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

Смотрите также     getcolor, getmaxcolor, getpalette, setbcolor.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getc

[Справочник С/C++] - getc

getc
Функция            Вводит из потока символ.

Синтаксис          #include <stdio.h>
                   int getc(FILE *stream);

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

Описание           Функция getc  представляет   собой   макрокоманду,
                   которая  получает  следующий  по порядку символ из
                   входного потока  stream  и  увеличивает  указатель
                   текущего положения в потоке на 1.

Возвращаемое       При успешном  завершении  функция  getc возвращает
значение           считанный    символ     после     предварительного
                   преобразования  его  в целое без расширения знака.
                   При возникновении ситуации EOF или при ошибке  она
                   возвращает EOF.

Переносимость      Функция поддерживаются на системах UNIX, описаны
                   Керниганом и Ритчи. Поддерживаются стандартом ANSI
                   C.

Смотрите также     fdetc, getch, getchar, getche, gets, putc, putchar,
                   ungetc.

Пример:

#include<stdio.h>

int main(void)
{
   char ch;
   printf("Введите символ :");
   /* ввести символ из стандартного входного потока stdin */
   ch = getc(stdin);
   printf("Был введен символ '%c'\n",ch);


getcbrk

[Справочник С/C++] - getcbrk

getcbrk
Функция            Получает параметры контроля над прерыванием по
                   Ctrl_Break.

Синтаксис          #include<dos.h>
                   int getcbrk(void);

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

Описание           Функция getcbrk использует системный вызов  MS-DOS
                   0x33 для получения текущих параметров контроля над
                   прерыванем Ctrl_Break.

Возвращаемое       Функция getcbrk возвращает 0 если контроль над
значение           прерываниями выключен  (off),  и 1,  если контроль
                   включен (on).

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

Смотрите также     ctrlbrk, setcbrk.

Пример:

#include<stdio.h>
#include<dos.h>

int main(void)
{
   if(getcbrk())
     printf("Флаг Ctrl-Break включен\n");
   else
     printf("Флаг Ctrl-Break выключен\n");


getch

[Справочник С/C++] - getch

getch
Функция            Вводит символ с консоли без эхопечати.

Синтаксис          #include<conio.h>
                   int getch(void);

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

Описание           Функция getch читает один символ,  непосредственно
                   с консоли, без вывода его на экран.

Возвращаемое       getch возвращает введенный с клавиатуры символ.
значение

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

Смотрите также     cgets, cscanf, fdetc, getc, getchar, getche, getpass,
                   kbhit, putch, ungetc.

Пример:

#include<conio.h>
#include<stdio.h>

int main(void)
{
   int c;
   int extended = 0;
   c = getch();
   if(!c)
     extended = getch();
   if(extended)
     printf("Расширенный символ\n");
   else
     printf("Не расширенный символ\n");


getchar

[Справочник С/C++] - getchar

getchar
Функция            Вводит символ из потока stdin.

Синтаксис          #include <stdio.h>
                   int getchar(void);

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

Описание           getchar -  это  макрокоманда,  вводящая  символ из
                   потока stdin.  Она определена  следующим  образом:
                   getc(stdin).

Возвращаемое       При успешном завершении функция getchar возвращает
значение           считанный символ      после       предварительного
                   преобразования  его  в целое без расширения знака.
                   При возникновении ситуации EOF или при ошибке  она
                   возвращает EOF.

Переносимость      Функция поддерживается на системах UNIX, описана
                   Керниганом и Ритчи. Поддерживается стандартом ANSI
                   C. Функция не совместима с Windows.

Смотрите также     fdetc, fgetchar, getch, getche, gets, putc,
                   putchar, scanf, ungetc.

Пример:

#include<stdio.h>

int main(void)
{
   char c;
   /* Замечание. getchar читает символы с stdin, который имеет
      буфер на одну строку. Поэтому она ничего не возвращает до
      тех пор, пока вы не нажмете Enter */
   while((c=getchar())!='\n')
     printf("%c",c);


getche

[Справочник С/C++] - getche

getche
Функция            Вводит символ  с  консоли  и  отображает  его   на
                   экране.

Синтаксис          #include<conio.h>
                   int getche(void);

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

Описание           Функция getche  считывает  один символ с консоли и
                   одновременно отображает его  в  текущем  текстовом
                   окне  на  экране,  использую напрямую видео-память
                   или BIOS.

Возвращаемое       getche возвращает символ, введенный с клавиатуры.
значение

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

Смотрите также     cgets, cscanf, fdetc, getc, getch, getchar, kbhit,
                   putch, ungetc.

Пример:

#include<conio.h>

int main(void)
{
   char ch;
   printf("Введите символ:");
   ch = getche();
   printf("\n Вы ввели символ '%c'\n",ch);


getcolor

[Справочник С/C++] - getcolor

getcolor
Функция            Возвращает текущий цвет рисунка.

Синтаксис          #include <graphics.h>
                   int far getcolor(void);

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

Описание           getcolor возвращает  текущий  цвет  вывода.   Цвет
                   вывода -  это  значение  в которое устанавливаются
                   пикселы,  когда рисуются линии и т.д.  Например, в
                   режиме  CGACO,  палитра  содержит  4 цвета :  цвет
                   фона,  светло зеленый,  светло красный и желтый. В
                   этом режиме,  если getcolor возвращает 1,  текущий
                   цвет вывода - светло-зеленый.

Возвращаемое       getcolor возвращает текущий цвет вывода.
значение

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

Смотрите также     getbkcolor, getmaxcolor, getpalette, setcolor.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getcurdir

[Справочник С/C++] - getcurdir

getcurdir
Функция            Получает текущий    каталог     для     указанного
                   устройства.

Синтаксис          #include<dir.h>
                   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

[Справочник С/C++] - getcwd

getcwd
Функция            Получает имя текущего рабочего каталога.

Синтаксис          #include<dir.h>
                   char * getcwd(char * buf, int buflen);

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

Описание           Функция getcwd  получает  полное  имя маршрута для
                   текущего рабочего    каталога    (cwd),    включая
                   спецификацию устройства,  до buflen байт длиной  и
                   запоминает   его  в  переменной  buf.  Если  длина
                   полного имени маршрута (включая нулевое окончание)
                   длиннее buflen, вырабатывается ошибка.

                   Если параметр   buf  имеет  значение  NULL,  буфер
                   длиной  n  байтов  будет  выделен  вам  с  помощью
                   malloc.  Затем  вы  можете  освободить  выделенный
                   буфер,  передав  значение,   полученное   функцией
                   getcwd - функции free.

Возвращаемое       Функция getcwd возвращает параметр buf, в случае
значение           ошибки возвращается значение NULL.

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

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

                   ENODEV - Нет такого устройства.
                   ENOMEM - Не хватает памяти.
                   ERANGE - Результат превышает допустимый порог.

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

Смотрите также     chdir, getcurdir, getdisk, mkdir, rmdir.

Пример:

#include<stdio.h>
#include<dir.h>

int main(void)
{
   char buffer[MAXPATH];
   getcwd(buffer,MAXPATH);
   printf("Текущая директория: %s\n",buffer);


getdate

[Справочник С/C++] - getdate

getdate
Функция            Получает системную дату.

Синтаксис          #include <dos.h>
                   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<dos.h>
#include<stdio.h>

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


getdefaultplatte

[Справочник С/C++] - getdefaultplatte

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

Синтаксис          #include <graphics.h>
                   struct palettetype *far getdefaultpalette(void);

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

Описание           getdefaultpalette находит  структуру  palettetype,
                   которая    содержит     палитру,     первоначально
                   установленную   драйвером   во   время  выполнения
                   initgraph.

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

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

Смотрите также     getpalette, initgraph.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* получить указатель на структуру */
ptr = getdefaultpalette();
for(i=0;i<pal->size;i++);
{
   printf("цвета[%d] = %d\n",i,ptr->colors[i]);
   getch();
}
/* очистка */
getch();
closegraph();


getdfree

[Справочник С/C++] - getdfree

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

Синтаксис          #include <dos.h>
                   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<stdio.h>
#include<stdlib.h>
#include<dir.h>
#include<dos.h>

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


getdisk

[Справочник С/C++] - getdisk

getdisk
Функция            Получает номер текущего устройства.

Синтаксис          #include<dir.h>
                   int getdisk(void);

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

Описание           Функция getdisk получает номер текущего устройства
                   и возвращает целое число :  0=A:;  1=B:;  2=C:;  и
                   т.д. (эквивалентна системному вызову DOS 0x19).

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

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

Смотрите также     getcurdir, setdisk, getcwd.

Пример:

#include<stdio.h>
#include<dir.h>

int main(void)
{
   int disk;
   disk = getdisk()+'A';
   printf("Текущий дисковод: %c\n",disk);


getdrivername

[Справочник С/C++] - getdrivername

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

Синтаксис          #include <graphics.h>
                   char *far getdrivername(void)

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

Описание           После вызова  initgraph,  getdrivername возвращает
                   имя драйвера, который загружен в данный момент.

Возвращаемое       getdrivername возвращает указатель на строку,
значение           которая содержит имя текущего драйвера.

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

Смотрите также     initgraph.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
/* указатель на имя драйвера */
char *drivername;

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
setcolor(getmaxcolor());
/* получить имя текущего используемого драйвера */
drivername = getdrivername();
/* установить выравнивание текста */
settextjustify(CENTER_TEXT,CENTER_TEXT);
/* вывести имя драйвера */
outtextxy(getmaxx()/2,getmaxy()/2,drivername);
/* очистка */
getch();
closegraph();


getdta

[Справочник С/C++] - getdta

getdta
Функция            Получает адрес DTA (область связи с диском).

Синтаксис          #include<dos.h>
                   char far * getdta(void);

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

Описание           Функция getdta  возвращает текущее значение адреса
                   DTA.   В   малых   и   средних   моделях    памяти
                   предполагается,  что  сегментом  является  текущий
                   сегмент данных.  Если вы используете исключительно
                   язык C,  то эта ситуация сохраняется,  если же  вы
                   будете  использовать  подпрограммы  на Ассемблере,
                   адрес DTA может оказаться в любом месте.

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

Возвращаемое       Функция getdta возвращает "дальний" указатель на
значение           текущую DTA.

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

Смотрите также     fcb (структура), setdta.

Пример:

#include<dos.h>
#include<stdio.h>

int main(void)
{
   char far *dta;
   dta = getdta();
   printf("Адрес области связи с диском: %Fp\n",dta);


getenv

[Справочник С/C++] - getenv

getenv
Функция            Получает символьную строку, содержащую параметры
                   операционной среды.

Синтаксис          #include<stdlib.h>
                   char *getenv(const char *name);

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

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

Возвращаемое       При успешном завершении функция getenv возвращает
значение           указатель на значение, соответствующее name.
                   Если заданная  переменная  name   не   определена,
                   функция getenv возвращает пустую строку.

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

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

Смотрите также     environ(variable), getpsp, putenv.

Пример:

#include<stdlib.h>
#include<stdio.h>

int main(void)
{
   char *s;
   s = getenv("COMSPEC"); /* получить параметр среды */
   printf("Командный процессор находится: %s\n",s);


getfat

[Справочник С/C++] - getfat

getfat
Функция            Получает информацию из таблицы размещения файлов
                   указанного дисковода.

Синтаксис          #include <dos.h>
                   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<stdio.h>
#include<conio.h>
#include<dos.h>

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


getfatd

[Справочник С/C++] - getfatd

getfatd
Функция            Получает информацию из таблицы размещения файлов.

Синтаксис          #include <dos.h>
                   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<stdio.h>
#include<dos.h>

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


getfillpattern

[Справочник С/C++] - getfillpattern

getfillpattern
Функция            Копирует  в память определенный пользователем
                   шаблон заполнения.

Синтаксис          #include <graphics.h>
                   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
                         };

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

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

Смотрите также     getfillsettings, setfillpattern.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getfillsettings

[Справочник С/C++] - getfillsettings

getfillsettings
Функция            Получает информацию о текущем шаблоне и цвете
                   заполнения.

Синтаксис          #include <graphics.h>
                   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  использует  текущий  цвет
                   фона.

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

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

Смотрите также     getfillpattern, setfillpattern, setfillstyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/* имена поддерживаемых типов заполнения */
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",grapherrormessage(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();


getftime

[Справочник С/C++] - getftime

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

Синтаксис          #include <io.h>
                   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<stdio.h>
#include<io.h>

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


getgraphmode

[Справочник С/C++] - getgraphmode

getgraphmode
Функция            Возвращает текущий графический режим.

Синтаксис          #include <graphics.h>
                   int far getgraphmode(void)

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

Описание           Ваша программа  должна  успешно  выполнить   вызов
                   initgraph  до  вызова getgraphmode.  Перечисляемый
                   тип  graphics_mode,  определенный   в   graphics.h
                   задает  имена встроенных графических режимов.  Для
                   ознакомления с таблицей,отображающей эти значения,
                   следует обратиться к описанию initgraph.

Возвращаемое       getgraphmode возвращает графический режим,
значение           установленный integraph или setgraphmode.

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

Смотрите также     getmoderange, restorecrtmode, setgraphmode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getimage

[Справочник С/C++] - getimage

getimage
Функция            Запоминает битовый образ некоторой области экрана.

Синтаксис          #include <graphics.h>
                   void far getimage(int left, int top, int
                                      right,int bottom, void
                                      far *bitmap);

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

Описание           getimage копирует  образ c экрана в память.  left,
                   top,  right и  bottom  определяют  область  экрана
                   прямоугольной  формы,  которая  будет скопирована.
                   bitmap  указывает  на  область  в   памяти,   куда
                   записывается битовый образ.  Первые два слова этой
                   области задают  ширину  и  высоту  прямоугольника,
                   оставшиеся определяют сам образ.

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

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

Смотрите также     imagesize, putimage, putpixel.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<alloc.h>

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",grapherrormessage(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;


getlinesttings

[Справочник С/C++] - getlinesttings

getlinesttings
Функция            Получает текущий цвет линии, шаблон и толщину.

Синтаксис          #include <graphics.h>
                   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    поддерживается,    но
                   игнорируется.

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

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

Смотрите также     setlinestyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/* имена поддерживаемых типов линий */
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",grapherrormessage(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();


getmaxcolor

[Справочник С/C++] - getmaxcolor

getmaxcolor
Функция            Возвращает максимальное  значение  цвета,  которое
                   может быть передано функции setcolor.

Синтаксис          #include <graphics.h>
                   int far getmaxcolor(void);

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

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

                   Например, c  256K  EGA,  getmaxcolor  будет всегда
                   возвращать 15.  Это  значит,  что  допустим  любой
                   вызов  setcolor  со значением от 0 до 15.  В CGA в
                   режиме  высокого  разрешения  или  в   монохромном
                   адаптере  Hercules getmaxcolor возвращает значение
                   1, т.к. эти адаптеры поддерживают только два цвета
                   рисования: 0 или 1.

Возвращаемое       getmaxcolor возвращает наивысшее допустимое
значение           значение цвета.

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

Смотрите также     getbcolor, getcolor, getpalette, getpalettesize,
                   setcolor.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getmaxmode

[Справочник С/C++] - getmaxmode

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

Синтаксис          #include <graphics.h>
                   int far getmaxmode(void);

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

Описание
                   getmaxmode позволяет  вам найти максимальный номер
                   режима   для   текущего   загруженного   драйвера,
                   непосредственно  из  этого драйвера.  Это дает ему
                   преимущество над  getmoderange,  который  работает
                   только  с драйверами Borland.  Минимальный режим -
                   0.

Возвращаемое       getmaxmode возвращает максимальный номер
значение           режима для текущего драйвера.

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

Смотрите также     getmodename, getmoderange.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getmaxx

[Справочник С/C++] - getmaxx

getmaxx
Функция            Возвращает максимальную координату х экрана.

Синтаксис          #include <graphics.h>
                   int far getmaxx(void);

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

Описание           getmaxx возвращает   максимальное    (относительно
                   экрана) значение х для текущего драйвера и режима.

                   Например, в  CGA   в   режиме   320х200,   getmaxx
                   возвращает     319.    getmaxx    неоценимо    для
                   центрирования, определения границ в oбласти экрана
                   и т. д.

Возвращаемое       getmaxx возвращает максимальную координату
значение           х экрана.

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

Смотрите также     getmaxy, getx.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getmaxy

[Справочник С/C++] - getmaxy

getmaxy
Функция            Возвращает максимальную координату y экрана.

Синтаксис          #include <graphics.h>
                   int far getmaxy(void);

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

Описание           getmaxy возвращает   максимальное    (относительно
                   экрана)  значение y для текущего значения драйвера
                   и режима.

                   Например, в   CGA   в   режиме   320х200,  getmaxy
                   возвращает    199.    getmaxy    неоценимо     для
                   центрирования, определения границ в oбласти экрана
                   и т. д.

Возвращаемое       getmaxy возвращает максимальную координату
значение           y экрана.

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

Смотрите также     getmaxx, getx, gety.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getmodename

[Справочник С/C++] - getmodename

getmodename
Функция            Возвращает указатель на строку, содержащую имя
                   указанного графического режима.

Синтаксис          #include <graphics.h>
                   char *far getmodename(int mode_number);

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

Описание           getmodename получает номер графического режима как
                   входной  параметр и возвращает строку,  содержащую
                   имя текущего графического  режима.  Имена  режимов
                   встроены  в каждый драйвер.  Возвращаемое значение
                   ("320x200 CGA   P1",   "640x200   CGA",   и  т.д.)
                   используется для построения меню  или  отображения
                   статуса.

Возвращаемое       getmodename возвращает указатель на строку
значение           с именем графического режима.

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

Смотрите также     getmaxmode, getmoderange.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getmoderange

[Справочник С/C++] - getmoderange

getmoderange
Функция            Получает диапазон режимов для данного графичеcкого
                   драйвера.

Синтаксис          #include <graphics.h>
                   void far getmoderange(int graphdriver, int
                   far *lomode, int far *himode);

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

Описание           getmoderange получает     диапазон      допустимых
                   графических  режимов  для  заданного  графического
                   драйвера   graphdriver.   Наименьшее    допустимое
                   значение   режима   возвращается   в   *lomode,  а
                   наивысшее  допустимое  значение  в  *himode.  Если
                   graphdriver  определяет несуществующий графический
                   драйвер,  *lomonade и *himonade устанавливаются  в
                   -1.  Если  значение  grapgdriver  равно -1,  будут
                   возвращены режимы текущего загруженного драйвера.

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

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

Смотрите также     getgraphmode, getmaxmode, getmodename, initgraph,
                   setgraphmode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getpalette

[Справочник С/C++] - getpalette

getpalette
Функция            Получает информацию о текущей палитре.

Синтаксис          #include <graphics.h>
                   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.

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

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

Смотрите также     getbkcolor, getcolor, getdefaultpalette,
                   getmaxcolor, setallpalette, setpalette.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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<pal.size, i++,y+=ht)
   {
      sprintf(pval,"Палитра[%02d]:0x%02X",i,pal.colors[i]);
      outtextxy(0,y,pval);
   }
}
/* очистка */
getch();
closegraph();


getpalettesize

[Справочник С/C++] - getpalettesize

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

Синтаксис          #include <graphics.h>
                   int far getpalettesize(void);

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

Описание           getpalettesize используется  для определения того,
                   как много элементов палитры может быть установлено
                   для текущего графического режима.  Например, EGA в
                   цветовом режиме возвращает 16.

Возвращаемое       getpalettesize возвращает количество элементов
значение           в текущей палитре.

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

Смотрите также     setpalette, setallpalette.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getpass

[Справочник С/C++] - getpass

getpass
Функция            Вводит пароль.

Синтаксис          #include<conio.h>
                   char *getpass(char *prompt);

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

Описание           Функция getpass  считывает  пароль   с   системной
                   консоли   после   выдачи   на  экран  специального
                   сообщения - символьной строки с нулевым окончанием
                   (prompt)  и отменяет отображение пароля на экране.
                   Возвращаемый в результате работы функции указатель
                   адресует  строку  символов  с  нулевым  окончанием
                   длиной  до   8   символов   (не   считая   нулевое
                   окончание) - пароль.

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

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

Смотрите также     getch.

Пример:

#include<conio.h>

int main(void)
{
   char *password;
   password = getpass("Введите пароль:");
   cprintf("Пароль: %s\r\n",password);


getpid

[Справочник С/C++] - getpid

getpid
Функция            Получает идентификатор процесса для программы.

Синтаксис          #include<process.h>
                   unsigned getpid(void);

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

Описание           Идентификатор процесса  идентифицирует  программу.
                   Этот    параметр    пришел    из    мультизадачных
                   операционных   систем   типа   UNIX,  где  процесс
                   идентифицируется уникальным номером.

Возвращаемое       getpid возвращает адрес сегмента psp программы.
значение

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

Смотрите также     getpsp, _psp(переменная).

Пример:

#include<stdio.h>
#include<process.h>

int main(void)
{
   printf("Идентификатор процесса данной программы = %X\n",
           getpid());
   printf("Под DOS - это адрес сегмента PSP\n");


getpixel

[Справочник С/C++] - getpixel

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

Синтаксис          #include <graphics.h>
                   unsigned far getpixel(int x, int y);

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

Описание           getpixel получает цвет точки с координатами (x,y).

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

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

Смотрите также     getimage, putpixel.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<dos.h>

#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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxx = getmaxx();
maxy = getmaxy();
maxcolor = getmaxcolor()+1;
while(!kbhit())
{
/* сбросить генератор случайных чисел */
seed = random(32767);
stand(seed);
for(i=0;i<PIXEL_COUNT;i++)
{
   x = random(maxx);
   y = random(maxy);
   color = random(maxcolor);
   putpixel(x,y,color);
}
delay(DELAY_TIME);
srand(seed);
for(i=0;i<PIXEL_COUNT;i++)
{
   x = random(maxx);
   y = random(maxy);
   color = random(maxcolor);
   if(color == getpixel(x,y);
     putpixel(x,y,0);
}
}
/* очистка */
getch();
closegraph();


getpsp

[Справочник С/C++] - getpsp

getpsp
Функция            Получает адрес  префикса   программного   сегмента
                   (psp).

Синтаксис          #include<dos.h>
                   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, _psp(variable).

Пример:

#include<stdio.h>
#include<dos.h>

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<len; i++)
      command[i] = cp[i+1];
   printf("Командная строка:%s\n",command);


gets

[Справочник С/C++] - gets

gets
Функция            Вводит строку символов из потока.

Синтаксис          #include<stdio.h>
                   char *gets(char *s);

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

Описание           Функция gets     читает      строку      символов,
                   оканчивающуюся    символом   перевода   строки   в
                   переменную  *s  из  стандартного  входного  потока
                   stdin.   Данная   символьная  строка  оканчивается
                   символом перехода на  новую  строку,  который  при
                   записи в *s заменяется на нулевое окончание (\0).

                   В отличие от scanf, gets позволяет вводить строки,
                   содержащие символы пробела и табуляции.  Все,  что
                   было введено до перевода каретки, помещается в s.

Возвращаемое       При успешном завершении, функция gets возвращает
значение           строку s; при достижении конца файла (EOF) или
                   ошибке возвращается NULL.

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

Смотрите также     cgets, ferror, fgets, fopen, fputs, fread, getc,
                   puts, scanf.

Пример:

#include <stdio.h>

int main(void)
{
    char string[133];
    printf("Введите строку:");
    gets(string);
    printf("Cтрока = '%s'\n,string);


gettext

[Справочник С/C++] - gettext

gettext
Функция            Копирует текст с экрана в память (работает в
                   текстовом режиме).

Синтаксис          #include<conio.h>
                   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.   Функция   не
                   совместима с Windows.

Смотрите также     movetext, puttext.

Пример:

#include<conio.h>

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();


gettextinfo

[Справочник С/C++] - gettextinfo

gettextinfo
Функция            Получает информацию о текстовом режиме.

Синтаксис          #include<conio.h>
                   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.  Функция  не совместима с
                   Windows.

Смотрите также     textattr, textbackground, textcolor, textmode,
                   wherex, wherey, window.

Пример:

#include<conio.h>

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


gettextsettings

[Справочник С/C++] - gettextsettings

gettextsettings
Функция            Получает информацию о текущем графическом шрифте.

Синтаксис          #include <graphics.h>
                   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,   в   которой    содержится
                   описание этих полей.

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

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

Смотрите также     outtext, outtextxy, registerbgifont,
                   settextjustify, settextstyle,
                   setusercharsize, textheight, textwidth.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/* имена поддерживаемых шрифтов */
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",grapherrormessage(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();


gettime

[Справочник С/C++] - gettime

gettime
Функция            Получает системное время.

Синтаксис          #include <dos.h>
                   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<stdio.h>
#include<dos.h>

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


getvect

[Справочник С/C++] - getvect

getvect
Функция            Получает вектор прерывания.

Синтаксис          #include<dos.h>
                   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<stdio.h>
#include<dos.h>

void interrupt get_out(); /* прототип ф-ции обработки прерывания */
void interrupt (*oldfunc)(); /* указатель на прерывание */
int looping = 1;

int main(void)
{
   puts("Нажмите <Shift><Ptr Sc> для завершения");
   /* сохранить старый вектор */
   oldfunc = getvect(5);
   /* установить новый вектор */
   setvect(5,get_out)
   /* ничего не делать */
   while(looping);
   /* восстановить старый вектор */
   setvect(5,oldfunc);
   puts("Успешно");
   return 0;
}
void interrupt get_out()
{
   looping = 0; /* изменить значение глобальной переменной */


getverify

[Справочник С/C++] - getverify

getverify
Функция            Получает состояние флага проверки.

Синтаксис          #include<dos.h>
                   int getverify(void);

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

Описание           Функция getverify   получает   текущее   состояние
                   флага проверки.

                   Флаг проверки  контролирует  вывод на диск.  Когда
                   проверка выключена,    запись    на    диск     не
                   контролируется,  если  же  проверка включена,  все
                   операции  записи  на  диск   контролируются   (для
                   гарантии правильности записи данных).

Возвращаемое       Функция getverify возвращает текущее состояние
значение           флага проверки, либо 0, либо 1.

                   Значение 0 = проверка выключена (off);
                   значение 1 = проверка включена (on).

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

Смотрите также     setverify.

Пример:

#include<stdio.h>
#include<dos.h>

int main(void)
{
   if(getverify())
      printf("Флаг верификации включен\n");
   else
      printf("Флаг верификации выключен\n");


getviewsettings

[Справочник С/C++] - getviewsettings

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

Синтаксис          #include <graphics.h>
                   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;
                    };

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

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

Смотрите также     clearviewport, getx, gety, srtviewport.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


getw

[Справочник С/C++] - getw

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

Синтаксис          #include <stdio.h>
                   int getw(FILE *stream);

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

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

Возвращаемое       getw возвращает следующее целое из входного потока
значение           При ошибке или в конце файла она возвращает EOF.
                   T.к. EOF  является  допустимым  значением,  то для
                   определения  ошибки  или  конца  файла  необходимо
                   использовать функции feof и ferror.

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

Смотрите также     putw.

Пример:

#include<stdio.h>
#include<stdlib.h>

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


getx

[Справочник С/C++] - getx

getx
Функция            Возвращает координату x текущей графической
                   позиции.

Синтаксис          #include <graphics.h>
                   int far getx(void);

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

Описание           getx находит  координату  x  текущей   графической
                   позиции.  Значение  берется  относительно  текущей
                   области просмотра.

Возвращаемое       getx возвращает координату x текущей позиции
значение

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

Смотрите также     getmaxx, getmaxy, getviewsettings, gety, moveto.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char message[80];

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

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

/* переместить точку в центр экрана */
moveto(getmaxx()/2,getmaxy()/2);
/* создать строку */
sprintf(message,"<-(%d,%d)",getx(),gety());
outtext(message);
/* очистка */
getch();
closegraph();


gety

[Справочник С/C++] - gety

gety
Функция            Возвращает координату y текущей графической
                   позиции.

Синтаксис          #include <graphics.h>
                   int far gety(void);

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

Описание           gety находит  координату  y  текущей   графической
                   позиции.  Значение  берется  относительно  текущей
                   области просмотра.

Возвращаемое       gety возвращает координату y текущей позиции
значение

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

Смотрите также     getmaxx, getmaxy, getviewsettings, getx, moveto.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char message[80];

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

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

/* переместить точку в центр экрана */
moveto(getmaxx()/2,getmaxy()/2);
/* создать строку */
sprintf(message,"<-(%d,%d)",getx(),gety());
outtext(message);
/* очистка */
getch();
closegraph();


gmtime

[Справочник С/C++] - gmtime

gmtime
Функция            Преобразует дату и время во время по стандарту
                   Гринвича.

Синтаксис          #include <time.h>
                   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<stdio.h>
#include<stdlib.h>
#include<time.h>

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


gotoxy

[Справочник С/C++] - gotoxy

gotoxy
Функция            Позиционирует курсор в текстовом окне.

Синтаксис          #include<conio.h>
                   void gotoxy(int x, int y);

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

Описание           gotoxy перемещает   курсор   в  текстовом  окне  в
                   указанную   позицию.   Если   координаты   указаны
                   неверно,   вызов   данной   функции  игнорируется.
                   Например,  это произойдет при вызове gotoxy(40,30)
                   когда окно имеет размеры 35 на 25.

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

Переносимость      gotoxy работает только на системах,  совместимых с
                   IBM PC.  Аналогичная  функция есть в Turbo Pascal.
                   Функция не совместима с Windows.

Смотрите также     wherex, wherey, window.

Пример:

#include<conio.h>

int main(void)
{
   clrscr();
   gotoxy(35,12);
   cprintf("Привет!");
   getch();


graphdefaults

[Справочник С/C++] - graphdefaults

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

Синтаксис          #include <graphics.h>
                   void far graphdefaults(void);

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

Описание           graphdefaults переустанавливает   все  графические
                   параметры в их начальные значения:

                   - Устанавливает область просмотра в полный экран.

                   - Перемещает текущую позицию в (0,0).

                   - Устанавливает начальные цвета палитры, цвет фона
                     и цвет вывода.

                   - Устанавливает начальный тип и шаблон заполнения.

                   - Устанавливает начальный шрифт и выравнивание.

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

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

Смотрите также     initgraph, setgraphmode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


grapherrormsg

[Справочник С/C++] - grapherrormsg

grapherrormsg
Функция            Возвращает указатель   на   строку   сообщения  об
                   ошибке.

Синтаксис          #include <graphics.h>
                   char *far grapherrormsg(int errorcode);

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

Описание           grapherrormsg возвращает   указатель   на   строку
                   сообщения  об  ошибке,  связанной  с  errorcode  -
                   значением, возвращаемым graphresult.

                   Обратитесь к  описанию  errno (Глава 3 "Глобальные
                   переменные") для ознакомления со списком ошибок  и
                   их мнемоникой.

Возвращаемое       grapherrormsg возвращает указатель на строку
значение           сообщения об ошибке.

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

Смотрите также     graphresult.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#define NONSENSE -50

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

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

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

/* выдать соответствующее ошибке сообщение */
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
line(o,o,getmaxx(),getmaxy());
/* очистка */
getch();
closegraph();


graphresult

[Справочник С/C++] - graphresult

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

Синтаксис          #include <graphics.h>
                   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.

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

Смотрите также      detectgraph, drawpoly, fillpoly, floodfill,
                    grapherrormsg, initgraph, pieslice,
                    registerbgidriver, registerbgifont,
                    setallpalette, setcolor, setfillstyle,
                    setgraphmode, setlinestyle, setpalette,
                    settextjustify, settextstyle, setusercharsize,
                    setviewport, setvisualpage.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

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


harderr

[Справочник С/C++] - harderr

harderr
Функция            Устанавливает подпрограмму     обработки     ошибок
                   электронного оборудования.

Синтаксис          #include<dos.h>
                   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.  Функция не совместима с
                   Windows.

Смотрите также     hardresume, hardretn, peek, poke.

Пример:

/* эта программа отслеживает ошибки дисковых операций ввода/вывода и
   запрашивает у пользователя дальнейшие инструкции. Попробуйте
   запустить ее, вынув дискету из дисковода а: */

#include <stdio.h>
#include <conio.h>
#include <dos.h>

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


hardresume

[Справочник С/C++] - hardresume

hardresume
Функция            Функция обработки       ошибок        электронного
                   оборудования.

Синтаксис          #include<dos.h>
                   void hardresume(int rescode);

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

Описание           Программа обработки      ошибочных      состояний,
                   устанавливаемая     функцией     harderr     может
                   использовать   функцию   hardresume  для  возврата
                   управления  DOS.  Возвращаемое  значение   rescode
                   должно     содержать    индикатор,    определяющий
                   игнорирование ошибки (0),  повторение операции (1)
                   или завершение программы (2). Завершение программы
                   выполняется посредством прерывания DOS 0x23.

                   Программа обработки  прерывания  должна возвращать
                   0,  если необходимо игнорировать ошибку,  1,  если
                   нужно   повторить  операцию  и  2  для  завершения
                   программы.

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

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

Смотрите также     harderr, hardretn.

Пример:

/* Эта программа  отслеживает появление ошибок, и запрашивает у
   пользователя дальнейшие действия. Для того, чтобы была вызва-
   на подпрограмма обработки ошибок, запуская программу, выньте
   из дисковода А: диск. */

#include <stdio.h>
#include <conio.h>
#include <dos.h>

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


hardretn

[Справочник С/C++] - hardretn

hardretn
Функция            Функция обработки        ошибок       электронного
                   оборудования.

Синтаксис          void hardretn(int errcode);

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

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

                   Программа обработки  прерывания  должна возвращать
                   0,  если необходимо игнорировать ошибку,  1,  если
                   нужно   повторить  операцию  и  2  для  завершения
                   программы.

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

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

Смотрите также     harderr, hardresume.

Пример:

/* Эта программа  отслеживает появление ошибок, и запрашивает у
   пользователя дальнейшие действия. Для того, чтобы была вызва-
   на подпрограмма обработки ошибок, запуская программу, выньте
   из дисковода А: диск. */

#include <stdio.h>
#include <conio.h>
#include <dos.h>

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


heapcheck

[Справочник С/C++] - heapcheck

heapcheck
Функция            Просматривает и проверяет память.

Синтаксис          #include<alloc.h>
                   int heapcheck(void);

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

Описание           heapcheck проходит   по  памяти  и  проверяет  все
                   блоки,  проверяя указатели, размер и другие важные
                   параметры.  В  больших  моделях  памяти  heapcheck
                   совпадает с farheapcheck.

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

                   Если нет   памяти,   то   возвращается    значение
                   _HEAPEMPTY (1).

                   Если память проверена,то возвращается_HEAPOK (2).

                   Если память     запорчена,     то     возвращается
                   _HEAPCORRUPT(-1).

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

Смотрите также     farheapcheck.

Пример:

#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   char *array[NUM_PTRS];
   int i;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = malloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     free(array[i]);
   if(heapcheck() == _HEAPCORRUPT)
     printf(" Память запорчена\n");
   else
     printf("Все нормально\n");


heapcheckfree

[Справочник С/C++] - heapcheckfree

heapcheckfree
Функция            Проверяет свободные блоки  памяти  на  константное
                   значение.

Синтаксис          #include<alloc.h>
                   int heapcheckfree(unsigned int fillvalue);

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

Описание           ????????????????

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

                   Если нет    памяти,   то   возвращается   значение
                   _HEAPEMPTY (1).

                   Если память проверена,то возвращается_HEAPOK (2).

                   Если память     запорчена,     то     возвращается
                   _HEAPCORRUPT(-1).

                   Если зачение  заполнения  отличается от fillvalue,
                   то возвращается _BADVALUE (-3).

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

Смотрите также     farheapcheckfree.

Пример:

#include<mem.h>
#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   char *array[NUM_PTRS];
   int i;
   int res;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = malloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     free(array[i]);
   if(heapfillfree(1) < 0)
   {
     printf(" Память запорчена\n");
     return 1;
   }
   for(i=0; i<NUM_PTRS; i+=2)
     memset(array[i],0,NUM_BYTES);
   res = heapcheckfree(1);
   if(res<0)
      switch(res)
      {
      case _HEAPCORRUPT:
           printf(" Память запорчена\n");
           return 1;
      case _BADVALUE:
           printf("Неверное содержимое пустой памяти \n");
           return 1;
      default:
           printf(" Нераспознаваемая ошибка\n");
           return 1;
      }
   printf("Все нормально\n");


heapchecknode

[Справочник С/C++] - heapchecknode

heapchecknode
Функция            Ищет и проверяет отдельный узел памяти.

Синтаксис          #include<alloc.h>
                   int heapchecknode(void *node);

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

Описание           Если узел   был   освобожден    и    heapchecknode
                   вызывается с указателем на освобожденный узел,  то
                   heapchecknode  может  вернуть  значение  _BADNODE,
                   вместо предполагаемого _FREEENTRY.  Это происходит
                   потому,  что соседние свободные блоки сливаются, и
                   блок,  указанный  при  вызове  функции,  больше не
                   существует.

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

                   Если нет   памяти,   то   возвращается    значение
                   _HEAPEMPTY (1).

                   Если память     запорчена,     то     возвращается
                   _HEAPCORRUPT(-1).

                   Если узел  не  найден,  то  возвращается  _BADNODE
                   (-2).

                   Если узел освобожден,  то возвращается  _FREEENTRY
                   (3).

                   Если узел,  это используемый блок, то возвращается
                   _USEDENTRY (4)

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

Смотрите также     farheapchecknode.

Пример:

#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   char *array[NUM_PTRS];
   int i;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = malloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     free(array[i]);
   for(i=0; i<NUM_PTRS; i++)
   {
      printf("Узел %2d",i);
      switch(heapchecknode(array[i]))
      {
         case _HEAPEMPTY:
             printf(" Нет памяти\n");
             break;
         case HEAPCORRUPT:
             printf(" Память запорчена\n");
             break;
         case _BADNODE:
             printf(" Неверный узел\n");
             break;
         case _FREEENTRY:
             printf(" Свободный блок\n");
             break;
         case _USEDENTRY:
             printf(" Занятый блок\n");
             break;
         default:
             printf(" Неизвестное возвращаемое значение\n");
             break;
     }


heapfillfree

[Справочник С/C++] - heapfillfree

heapfillfree
Функция            Заполняет свободные   блоки   памяти    констнтным
                   значением.

Синтаксис          #include<alloc.h>
                   int heapfillfree(unsigned int fillvalue);

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

Описание           ????????????????

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

                   Если нет    памяти,   то   возвращается   значение
                   _HEAPEMPTY (1).

                   Если память проверена,то возвращается_HEAPOK (2).

                   Если память     запорчена,     то     возвращается
                   _HEAPCORRUPT(-1).

                   Если зачение  заполнения  отличается от fillvalue,
                   то возвращается _BADVALUE (-3).

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

Смотриет также     farheapfillfree.

Пример:

#include<mem.h>
#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   char *array[NUM_PTRS];
   int i;
   int res;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = malloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     free(array[i]);
   if(heapfillfree(1) < 0)
   {
     printf(" Память запорчена\n");
     return 1;
   }
   for(i=0; i<NUM_PTRS; i+=2)
     memset(array[i],0,NUM_BYTES);
   res = heapcheckfree(1);
   if(res<0)
      switch(res)
      {
      case _HEAPCORRUPT:
           printf(" Память запорчена\n");
           return 1;
      case _BADVALUE:
           printf("Неверное содержимое пустой памяти \n");
           return 1;
      default:
           printf(" Нераспознаваемая ошибка\n");
           return 1;
      }
   printf("Все нормально\n");


heapwalk

[Справочник С/C++] - heapwalk

heapwalk
Функция            Используется для перемещенмия по памяти от узла  к
                   узлу.

Синтаксис          #include<alloc.h>
                   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.  Функция не совместима
                   с Windows.

Смотрите также     farheapwalk.

Пример:

#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   struct heapinfo hi;
   char *array[NUM_PTRS];
   int i;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = malloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     free(array[i]);
   hi.ptr = NULL;
   printf("   Размер      Статус   \n");
   printf("   ------      ------   \n");
   while(heapwalk(&hi) == _HEAROK)
      printf(" %7u      %s\n",fi.size,hi.in_use ? "используется" :
          "не используется");


highvideo

[Справочник С/C++] - highvideo

highvideo
Функция            Устанавливает бит интенсивности.

Синтаксис          #include<conio.h>
                   void highvideo(void);

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

Описание           highvideo устанавливает, что далее будут выводится
                   символы с высокой интенсивностью.  Она делает это,
                   устанавливая  бит  интенсивности  в текущем цвете.

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

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

Переносимость      highvideo работает только на машинах, совместимых с
                   IBM PC.  Аналогичная  функция есть в Turbo Pascal.
                   Функция не совместима с Windows.

Смотрите также     cprintf, cputs, gettextinfo, lowvideo, normvideo,
                   textattr, textcolor.

Пример:

#include<conio.h>

int main(void)
{
   lowvideo();
   cprintf("Текст низкой интенсивности");
   highvideo();
   gotoxy(1,2);
   cprintf("Текст высокой интенсивности");


hypot

[Справочник С/C++] - hypot

hypot
Функция            Вычисляет гипотенузу прямоугольного треугольника.

Синтаксис          #include<math.h>
                   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<stdio.h>
#include<math.h>

int main(void)
{
   double result;
   double x = 3.0;
   double y = 4.0;
   result = hypot(x,y);
   printf("Гипотенуза = %lf\n",result);


imag

[Справочник С/C++] - imag

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

Синтаксис          #include<complex.h>
                   double imag(complex x);

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

Описание           Комплексное число  состоит   из   двух   чисел   с
                   плавающей  точкой.  imag  возвращает  одно из них,
                   мнимую часть.

Возвращаемое       Мнимая часть комплексного числа.
значение

Переносимость      Комплексные функции    требуют   С++   и   поэтому
                   непереносимы.

Смотри также       complex, conj, real.

Пример:

#include<stream.h>
#include<complex.h>

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


imagesise

[Справочник С/C++] - imagesise

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

Синтаксис          #include <graphics.h>
                   unsigned far  imagesize(int left,  int top,
                    int right, int bottom);

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

Описание           imagesize определяет    размер   области   памяти,
                   требуемой  для  хранения  битового  образа.   Если
                   размер, требуемый для выбранного образа больше или
                   равен 64К-1 байт, imagesize возвращает 0хFFFF(-1).

Возвращаемое       imagesize возвращает размер требуемой области
значение           памяти в байтах.

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

Смотри также       getimage, putimage

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#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",grapherrormessage(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);


initgraph

[Справочник С/C++] - initgraph

initgraph
Функция            Инициализирует графическую систему.

Синтаксис          #include <graphics.h>
                   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    с    диска.   В
                   противоположность этой     схеме      динамической
                   загрузки, вы можете присоединить файл графического
                   драйвера    (или    несколько    таких     файлов)
                   непосредственно к   выполняемым  файлам.  Смотрите
                   более подробную  информацию  в   файле   UTIL.DOC,
                   который поставляется вместе с системой.

                   pathodriver определяeт    маршрут    по   которому
                   initgraph  будет  искать   графические   драйверы.
                   initgraph сначала ищет по маршруту,  определяемому
                   в pathtodriver,  затем ( если их там нет)  ищет  в
                   текущем каталоге. Следовательно, если pathtodriver
                   равен NULL,  файлы драйвера (*.BGI) должны быть  в
                   текущем каталоге. Таким же путем settexstyle будет
                   искать файлы (.CHR), содержащие шрифты.

                   *graphdriver -    целое,    которое     определяет
                   используемый графический драйвер. Вы можете задать
                   его значение,  используя константу graphics_driver
                   перечисляемого типа,  определенного в graphics.h и
                   показанного в таблице 2.3.

                   Таблица 2.3. Константы графических драйверов.
                   _____________________________________________
                   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 и приведенную в  таблице
                   2.5.

                   Замечание: Значения graphdriver и graphmode должны
                   быть установлены в значения из таблиц 2.5  и  2.3,
                   иначе вы   получите   непредсказуемый   результат.
                   Исключение составляет    лишь    случай,     когда
                   graphdriver = DETECT.

                   В таблице 2.5,  элементы столбца "Палитра" C0, C1,
                   C2 и C3 относятся  к  четырем  ранее  определенным
                   четырехцветным палитрам,  действительным для CGA и
                   совместимых систем.  Вы можете выбрать  цвет  фона
                   (элемент #0),  но остальные цвета не меняются. Эти
                   палитры подробно описаны в главе 8 "Видео-функции"
                   в "Руководстве     программиста"     (в    разделе
                   "Управление цветом"),  и коротко описаны в таблице
                   2.4.

    Таблица 2.4. Палитры цветов.
    -----------------------------------------------------------
    Номер         Константа присвоенная значению пиксела
    палитры          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 в текущий графический режим.

Таблица 2.5. Графические режимы.
--------------------------------------------------------------
Графическ.  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
--------------------------------------------------------------

Возвращаемое       initgraph всегда  устанавливает   внутренний   код
значение           ошибки. В случае успешного выполнения код равен 0.
                   В случае же ошибки *graphdriver устанавливается  в
                   -2,  -3,  -4  или  -5,  и  graphresult  возвращает
                   соответствующие значения, перечисленные ниже:

                    -2 -  Не может определить тип графической
                          карты (grNotDetected).

                    -3 -  Не может найти файл драйвера
                          (grFileNotFound).

                    -4 -  Неправильный драйвер (grInvalidDriver).

                    -5 -  Недостаточно памяти для загрузки
                          драйвера (grNoLoadMem).

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

Смотри также       сlosegraph, detectgraph,        getdefaultpalette,
                   getdrivername,     getgraphmode,     getmoderange,
                   graphdefault,      _graphgetmem,      graphresult,
                   installuserdriver,              registerbgidriver,
                   registerbgifont,  restorecrtmode, setgraphbufsize,
                   setgraphmode

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

/* мнмцмализация графического режима */
initgraph(&graphdriver,&gmode,"");

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

getch();
closegraph();


inport

[Справочник С/C++] - inport

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

Синтаксис          #include <dos.h>
                   int inport(int portid);

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

Описание           inport работает  аналогично  команде  процессорора
                   80x86  IN.  Она  считывает  младший  байт слова из
                   входного порта,  заданного  параметром  portid,  а
                   старший байт из порта portid+2.

Возвращаемое       Функции inport возвращают прочитанное значение.
значение

Переносимость      Функция уникальна для микропроцессоров семейства
                   8086.

Смотри также       inportb, outport, outportb.

Пример:

#include<stdio.h>
#include<dos.h>

int main(void)
{
   int result;
   int port = 0; /* последовательный порт 0 */
   result = inport(port);
   printf("Слово, считанное из порта %d = 0x%X\n",port,result);


inportb

[Справочник С/C++] - inportb

inportb
Функция            Считывает байт из порта.

Синтаксис          #include <dos.h>
                   int inport(int port);

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

Описание           inportb - это макрокоманда, которая считывает байт
                   из порта,  определяемого параметром port.  Если вы
                   подключили файл dos.h,  то inportb рассматривается
                   как    макрокоманда,    которая   расширяется   до
                   встроенного кода.  Если вы не включите dos.h,  или
                   отмените   определение   макрокоманды   с  помощью
                   инструкции #undef, то получите функцию.

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

Переносимость      Функция уникальна для микропроцессоров семейства
                   8086.

Смотри также       inport, outport, outportb.

Пример:

#include<stdio.h>
#include<dos.h>

int main(void)
{
   unsigned char result;
   int port = 0; /* последовательный порт 0 */
   result = inportb(port);
   printf("Байт, считанный из порта %d = 0x%X\n",port,result);


insline

[Справочник С/C++] - insline

insline
Функция            Вставляет пустую строку в текстовом окне.

Синтаксис          #include<conio.h>
                   void insline(void);

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

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

                   insline используется в текстовом режиме.

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

Переносимость      insline работает только на компьютерах совместимых
                   с IBM PC,  соответствующая функция  есть  в  Turbo
                   Pascal. Функция не совместима с Windows.

Смотри также       clreol, delline, window

Пример:

#include<conio.h>

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();


installuserdriver

[Справочник С/C++] - installuserdriver

installuserdriver
Функция            Добавляет дополнительные   драйверы   устройств  в
                   таблицу драйверов устройств BGI.

Синтаксис          #include <graphics.h>
                   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    дал    вам   эту   функцию
                   автодетектирования).  Когда вы добавите драйвер  с
                   помощью installuserdriver,   вы  передадите  адрес
                   этой  функции  вместе  с  именем  файла   драйвера
                   устройства.

                   После того  как  вы  добавили имя файла драйвера и
                   SGA-функцию   автодетектирования,   вы   вызываете
                   initgraph  и  позволяете  ему выполнять нормальный
                   процесс   автодетектирования.   Перед   тем    как
                   initgraph      вызовет      встроенную     функцию
                   автодетектирования(detectgraph),    он     вызовет
                   SGA-функцию     автодетектирования.    Если    эта
                   SGA-функция не находит  аппаратные  средства  SGA,
                   она возвращает значение -11 (grError), а initgraph
                   продолжает нормальный процесс  автодетектирования,
                   который  может  включать вызов других поставленных
                   производителем функций  автодетектирования  в  том
                   порядке  в  каком  они  были добавлены).  Если же,
                   однако,  функция определит,  что SGA присутствует,
                   она возвращает неотрицательный номер режима; затем
                   initgraph находит и загружает  SGA.BGI,  переводит
                   аппаратные    средства    в   графический   режим,
                   рекомендуемый  функцией   автодетектирования,   и,
                   наконец, передает управление вашей программе.

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

Возвращаемое       Значение возвращаемое   installuserdriver   -  это
значение           номер драйвера,  который вы передадите в initgraph
                   для того,  чтобы выбрать вручную вновь добавленный
                   драйвер.

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

Смотри также       initgraph, registerbgidriver

Пример:

#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>

/* прототипы функций */
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);


installuserfont

[Справочник С/C++] - installuserfont

installuserfont
Функция            Загружает файл  со  шрифтом  (.CHR),  который   не
                   встроен в BGI-систему.

Синтаксис          #include <graphics.h>
                   int far installuserfont(char far *name);

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

Описание           name -  полное  имя шрифтового файла,  содержащего
                   векторные шрифты.    Одновременно    может    быть
                   добавлено до двадцати шрифтов.

Возвращаемое       installuserfont возвращает     ID-номер    шрифта,
значение           который затем может  передаваться  в  settextstyle
                   для    выбора    соответствующего   шрифта.   Если
                   внутренняя   таблица   шрифтов    заполнена,    то
                   возвращаемое значение равно -11 (grError).

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

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

Пример:

#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>

/* прототипы функций */
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);


int86

[Справочник С/C++] - int86

int86
Функция            Генерирует программное прерывание процессора 8086.

Синтаксис          #include <dos.h>
                   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 <dos.h>
#include<conio.h>
#include<stdio.h>

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


int86x

[Справочник С/C++] - int86x

int86x
Функция            Интерфейс с программными прерываниями процессора
                   8086.

Синтаксис          #include <dos.h>
                   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,
                   int86, intr, segread.

Пример:

#include<dos.h>
#include<process.h>
#include<stdio.h>

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


intdos

[Справочник С/C++] - intdos

intdos
Функция            Интерфейс с функциями DOS.

Синтаксис          #include <dos.h>
                   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, int86, int86x,
                   intdosx, intr

Пример:
      #include <stdio.h>
      #include <dos.h>
      /* удаление файла. При успешном завершении возвращает 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");


intdosx

[Справочник С/C++] - intdosx

intdosx
Функция            Интерфейс с функциями DOS.

Синтаксис          #include <dos.h>
                   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, int86x,
                   int86, intr, segread.

Пример:
      #include <stdio.h>
      #include <dos.h>
      /* удаление файла. При успешном завершении возвращает 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


intr

[Справочник С/C++] - intr

intr
Функция            Дополнительный интерфейс к прерываниям  процессора
                   8086.

Синтаксис          #include <dos.h>
                   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, int86, int86x, intdos, intdosx.

Пример:

#include<stdio.h>
#include<string.h>
#include<dir.h>
#include<dos.h>

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


ioctl

[Справочник С/C++] - ioctl

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 <stdio.h>
#include <io.h>
#include <dir.h>

int main(void)
{
   int stat;
   /* функция 8 используется, чтобы определить, является ли
      диск, в текущем устройстве сменным */
         stat = ioctl(0, 8, 0, 0);
         printf("Диск %c %s сменный\n", getdisk() + 'A',
                 (stat == 0) ? "" : "не");


isalnum

[Справочник С/C++] - isalnum

isalnum
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isalnum(c))
      printf("%c - alphanumeric\n",c);
   else
      printf("%c - isn't alphanumeric\n",c);


isalpha

[Справочник С/C++] - isalpha

isalpha
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isalpha(c))
      printf("%c - alphabetic\n",c);
   else
      printf("%c - isn't alphabetic\n",c);


isascii

[Справочник С/C++] - isascii

isascii
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   int isascii(int ch);

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

Описание           isascii - это макрокованда, которая классифицирует
                   целые значения в коде ASCII,  просмотром  таблицы.
                   При true она возвращает ненулевое значение и 0 при
                   false.

                   isascii определена для всех целых значений.

Возвращаемое       isascii возвращает ненулевое значение если младший
значение           байт ch лежит в диапазоне от 0 до 127 (0x00-0x7F)

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

Пример:

#include<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isascii(c))
      printf("%c - is ascii\n",c);
   else
      printf("%c - isn't ascii\n",c);


isatty

[Справочник С/C++] - isatty

isatty
Функция            Производит проверку на тип устройства.

Синтаксис          #include<io.h>
                   int isatty(int handle);

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

Описание           Функция isatty определяет,  какой из перечисленных
                   ниже  типов  устройств   идентифицирует   параметр
                   handle:

                   - Терминал.

                   - Консоль.

                   - Принтер.

                   - Последовательный порт.

Возвращаемое       Если устройство является символьным, функция
значение           isatty возвращает ненулевое значение, если данное
                   устройство не относится  к  такому  типу,  функция
                   isatty возвращает 0.

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

Пример:

#include<stdio.h>
#include<io.h>

int main(void)
{
   int handle;
   handle = fileno(stdout);
   if(isatty(c))
      printf("Дескриптор %d - относится к устройству\n",handle);
   else
      printf("Дескриптор %d - не относится к устройству\n",handle);


iscntrl

[Справочник С/C++] - iscntrl

iscntrl
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(iscntrl(c))
      printf("%c - управляющий символ\n",c);
   else
      printf("%c - не является управляющим символом\n",c);


isdigit

[Справочник С/C++] - isdigit

isdigit
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(iscntrl(c))
      printf("%c - цифра\n",c);
   else
      printf("%c - не является цифрой\n",c);


isgraph

[Справочник С/C++] - isgraph

isgraph
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isgraph(c))
      printf("%c - графический символ\n",c);
   else
      printf("%c - не является графическим символом\n",c);


islower

[Справочник С/C++] - islower

islower
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(islower(c))
      printf("%c - буква в нижнем регистре\n",c);
   else
      printf("%c - не является буквой в нижнем регистре\n",c);


isprint

[Справочник С/C++] - isprint

isprint
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isprintt(c))
      printf("%c - печатаемый символ\n",c);
   else
      printf("%c - не является песатаемым символом\n",c);


ispunct

[Справочник С/C++] - ispunct

ispunct
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isprintt(c))
      printf("%c - символ разделитель\n",c);
   else
      printf("%c - не является символом разделителем\n",c);


isspace

[Справочник С/C++] - isspace

isspace
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isspace(c))
      printf("%c - символ разделитель\n",c);
   else
      printf("%c - не является символом разделителем\n",c);


isupper

[Справочник С/C++] - isupper

isupper
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isupper(c))
      printf("%c - буква в верхнем регистре\n",c);
   else
      printf("%c - не является буквой в верхнем регистре\n",c);


isxdigit

[Справочник С/C++] - isxdigit

isxdigit
Функция            Макро классификации символов.

Синтаксис          #include <ctype.h>
                   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<ctype.h>
#include<stdio.h>

int main(void)
{
   char c = 'C';
   if(isxdigit(c))
      printf("%c - шестнадцатеричная цифра\n",c);
   else
      printf("%c - не является шестнадцатеричной цифрой\n",c);


itoa

[Справочник С/C++] - itoa

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

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

int main(void)
{
   int number = 12345;
   char string[25];
   itoa(number,string,10);
   printf("Целое: %d, строка: %s\n",number,string);


kbhit

[Справочник С/C++] - kbhit

kbhit
Функция            Производит проверку:  есть  ли  символы  в  буфере
                   клавиатуры.

Синтаксис          #include<conio.h>
                   int kbhit(void);

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

Описание           Функция kbhit проверяет, была ли нажата какая-либо
                   клавиша клавиатуры.  Нажатая  клавиша  может  быть
                   определена с помощью функций getch или getche.

Возвращаемое       Если какая-либо клавиша была нажата, функция
значение           kbhit возвращает ненулевое значение, если нет, она
                   возвращает 0.

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

Смотрите также     getch, getche.

Пример:

#include<conio.h>

int main(void)
{
   cprintf("Для продолжения нажмите любую клавишу:");
   while(!kbhit())  /* пустой цикл */
   cprintf("\r\nБыла нажата клавиша ");


keep

[Справочник С/C++] - keep

keep
Функция            Осуществляет выход  в DOS из программы,  оставляя,
                   тем не менее еe резидентной.

Синтаксис          #include<dos.h>
                   void keep(unsigned char status, unsigned size);

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

Описание           Функция keep осуществляет выход в DOS со  статусом
                   выхода в переменной status. Текущая программа, тем
                   не менее,  остается резидентной.  Длина  программы
                   устанавливается   в  size  параграфов,  и  остаток
                   памяти  освобождается.

                   Функция keep может быть использована для установки
                   резидентных   программ   (TSR).    Функция    keep
                   использует функцию DOS 0x31.

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

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

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

Пример:

/* ПРИМЕЧАНИЕ:
   Это программа   обработки   прерывания.   Если   вы    попытаетесь
   откомпилировать  ее с включенной проверкой переполнения стека,  то
   вы  не  !!!  получите  правильно  работающей  программы.   Формула
   использованая  в  этой  функции,  вычисляющая  число параграфом не
   обязательно  будет  работать  во  всех  случаях.   Используйте   с
   осторожностью!  Резидентные  программы  являются довольно сложными
   продуктами,  и для них не обеспечивается дополнительная поддержка.
   Дополнительную информацию вы найдете в технической документации по
   DOS */

#include<dos.h>
/* прерывание по таймеру */
#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);


labs

[Справочник С/C++] - labs

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

Синтаксис          #include<math.h>
                   long int labs(long int x);

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

Описание           labs вычисляет абсолютное значение параметра х.

Возвращаемое       Возвращает абсолютное значение х.
значение

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

Смотрите также     abs, cabs, fabs.

Пример:

#include<stdio.h>
#include<math.h>

int main(void)
{
   long result;
   long x = -12345678L;
   result = labs(x);
   printf("число: %ld, абсолютное значение :%ld\n",
         x,result);


ldexp

[Справочник С/C++] - ldexp

ldexp
Функция            Вычисляет значение x * 2^exp.

Синтаксис          #include<math.h>
                   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<stdio.h>
#include<math.h>

int main(void)
{
   double valus;
   double x = 2;
   /* ldexp возводит 2 в степень 3, и затем умножает
      результат на 2 */
   value = ldexp(x);
   printf("значение ldexp = %lf\n",value);


ldiv

[Справочник С/C++] - ldiv

ldiv
Функция            Деление двух длинных целых, возвращает частное и
                   остаток.

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

int main(void)
{
   ldiv_t lx;
   lx = ldiv(100000L, 30000L);
   printf("100000 div 30000 = %ld, остаток = %ld\n",
                                         lx.quot, lx.rem);


lfind

[Справочник С/C++] - lfind

lfind
Функция            Выполняет линейный поиск.

Синтаксис          #include<stdlib.h>
                   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<stdio.h>
#include<stdlib.h>

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


line

[Справочник С/C++] - line

line
Функция            Рисует линию между двумя указанными точками.

Синтаксис          #include <graphics.h>
                   void far line(int x1, int y1, int x2, int y2);

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

Описание           line рисует линию,  используя текущие цвет,  тип и
                   толщину линий,  между двумя точками, определенными
                   как (x1,  y1)  и  (x2,  y2),  не  изменяя  текущую
                   позицию (CP).

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

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

Смотрите также     getlinesettings, linerel, lineto, setcolor,
                   setlinestyle, setwritemode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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

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

/* нарисовать диагональную линию */
line(0,0,xmax,ymax);

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


linerel

[Справочник С/C++] - linerel

linerel
Функция            Рисует линию на заданное расстояние от текущей
                   позиции (CP).

Синтаксис          #include <graphics.h>
                   void far linerel(int dx, int dy);

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

Описание           linerel рисует  линию от CP до точки,  находящейся
                   на расстоянии (dx,  dy) от CP.  CP перемещается на
                   CP + (dx,dy).

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

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

Смотрите также     getlinesettings,    line,   lineto,   setcolor
                   setlinestyle, setwritemode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char msg[80];

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


lineto

[Справочник С/C++] - lineto

lineto
Функция            Рисует линию от текущей позиции  (CP)  в  точку  с
                   координатами (x,y).

Синтаксис          #include <graphics.h>
                   void far lineto(int x, int y);

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

Описание           lineto рисует линию от CP до точки с координатами
                   (x,y), затем переносит (CP) в (x,y).

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

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

Смотри также       getlinesettings,   line,   linerel,   setcolor,
                   setlinestyle, setvisualpage, setwritemode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char msg[80];

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


localeconv

[Справочник С/C++] - localeconv

localeconv
Функция            Возвращает указатель на текущую структуру locale.

Синтаксис          #include<locale.h>
                   struct lconv *localeconv(void);

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

Описание           Эта функция  устанавливает  форматы  вывода  цен и
                   другие числовые  форматы.  Однако  Borland  C++  в
                   настоящее время поддерживает только locale C.

Возвращаемое       Возвращает указатель на текущую структуру locale.
значение           Дополнительную информацию вы найдете в файле
                   locale.h.

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

Смотрите также     setlocale.

Пример:

#include<locale.h>
#include<stdio.h>

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


localtime

[Справочник С/C++] - localtime

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

Синтаксис          #include <time.h>
                   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, и
                   флаг, определяющий действует ли летнее время.

Возвращаемое       localtime возвращает указатель на структуру,
значение           содержащую разделенное время. Эта структура имеет
                   класс памяти static и перезаписывается при  каждом
                   вызове.

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

Смотрите также     asctime, ctime, gmtime, ftime, stime, time, tzset.

Пример:

#include<stdio.h>
#include<time.h>
#include<dos.h>

int main(void)
{
time_t     timer;
struct tm  *tblock;
timer = time(NULL);
tblock = localtime(&timer);
printf("Местное время: %s",asctime(tblock));


lock

[Справочник С/C++] - lock

lock
Функция            Блокирует доступ к части файла.

Синтаксис          #include<io.h>
                   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<io.h>
#include<fcntl.h>
#include<sys\stat.h>
#include<process.h>
#include<share.h>
#include<stdio.h>

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


log

[Справочник С/C++] - log

log
Функция            Вычисляет натуральный логарифм ln(x).

Синтаксис          Версия для вещественных    Версия для комплексных
                   #include<math.h>           #include<complex.h>
                   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, log10, sqrt.

Пример:

#include<math.h>
#include<stdio.h>

int main(void)
{
   double result;
   double x = 8.6872;
   result = log(x);
   printf("Натуральный логарифм от %lf равен %lf\n",x,result);


log10

[Справочник С/C++] - log10

log10
Функция            Вычисляет десятичный логарифм log10(x).

Синтаксис          Версия для вещественных  Версия для комплексных
                   #include<math.h>         #include<complex.h>
                   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<math.h>
#include<stdio.h>

int main(void)
{
   double result;
   double x = 800.6872;
   result = log10(x);
   printf("Десятичный логарифм от %lf равен %lf\n",x,result);


longjmp

[Справочник С/C++] - longjmp

longjmp
Функция            Выполняет нелокальный переход.

Синтаксис          #include <setjmp.h>
                   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.  Функция  не   совместима   с
                   Windows.

Смотрите также     ctrlbrk, setjmp, signal.

Пример:

#include <stdio.h>
#include <setjmp.h>

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


lowvideo

[Справочник С/C++] - lowvideo

lowvideo
Функция            Устанавливает низкую    интенсивность    выводимых
                   символов.

Синтаксис          #include<conio.h>
                   void lowvideo(void);

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

Описание           lowvideo обнуляет   бит   интенсивности   в   поле
                   атрибутов текущего цвета символов.

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

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

Переносимость      lowvideo работает    только     на     компьютерах
                   совместимых  с IBM PC.  Аналогичная функции есть в
                   Turbo Pascal. Функция не совместима с Windows.

Смотрите также     highvideo, normvideo, textattr, textcolor.

Пример:

#include<conio.h>

int main(void)
{
   clrscr();
   lowvideo();
   cprintf("Текст низкой интенсивности");
   highvideo();
   gotoxy(1,2);
   cprintf("Текст высокой интенсивности");


lsearch

[Справочник С/C++] - lsearch

lsearch
Функция            Выполняет линейный поиск.

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>
#include<string.h>

/* инициализировать число цветов */
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<ncolors; i++)
    printf("%s\n",colors[i]);


lseek

[Справочник С/C++] - lseek

lseek
Функция            Перемещает указатель чтения/записи файла.

Синтаксис          #include <io.h>
                   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)        конец файла
                   --------------------------------------------------

Возвращаемое       Функция lseek возвращает значение смещения новой
значение           позиции указателя, измеряемой в байтах от начала
                   файла. В  случае  ошибки  функция lseek возвращает
                   значение  -1L  и   глобальная   переменная   errno
                   получает одно из следующих значений:

                   EBADF   - Неверный номер файла.
                   EINVAL  - Неверный аргумент.

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

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

Смотрите также     filelength, fseek, ftell, getc, open, sopen,
                   ungetc, _write, write.

Пример:

#include<sys\stat.h>
#include<string.h>
#include<stdio.h>
#include<fcntl.h>
#include<io.h>

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


ltoa

[Справочник С/C++] - ltoa

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

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>

int main(void)
{
   char string[25];
   long value = 123456789L;
   ltoa(value,string,10);
   printf("число = %ld строка: %s\n",value,string);


malloc

[Справочник С/C++] - malloc

malloc
Функция            Выделяет память.

Синтаксис          #include<stdlib.h>
                   #include<alloc.h>
                   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<stdio.h>
#include<string.h>
#include<alloc.h>
#include<process.h>

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


matherr

[Справочник С/C++] - matherr

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

Синтаксис          #include <math.h>
                   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;
         ¦ вы можете модифицировать это значение.
---------+-----------------------------------------------------------

                   Параметр typedef_mexcep,  также   определенный   в
                   файле math.h,  перечисляет следующие символические
                   константы,    представляющие    собой    возможные
                   математические ошибки:

----------------T----------------------------------------------------
 Символическая  ¦   Математическая ошибка
 константа      ¦
----------------+----------------------------------------------------
 DOMAIN         ¦ аргумент не находится в области определения функции
                ¦ (например log(-1));
 SING           ¦ аргументы дают ошибку в сингулярности (например
                ¦ pow(0,-2));
 OVERFLOW       ¦ аргумент приводит к результату, превышающему
                ¦ MAXDOUBLE (например exp(1000));
 UNDERFLOW      ¦ аргумент приводит к результату, меньшему
                ¦ MINDOUBLE (например exp(-1000));
 TLOSS          ¦ аргументы дают результат с потерей значащих цифр
                ¦ например sin(10e70)).
----------------+----------------------------------------------------

                   Символические константы   MAXDOUBLE   и  MINDOUBLE
                   определены в файле values.h.

                   Исходный код для функции matherr,  определенной по
                   умолчанию  находится  на  дистрибутивных  дисках с
                   системой Borland C++.

                   Стандарт UNIX  функции  matherr   несовместим   со
                   стандартом  ANSI  C.  Если  вам  требуется  версия
                   функции  matherr  для  системы  UNIX,  пользуйтесь
                   программой      matherr.c,     поставляемой     на
                   дистрибутивных дискетах пакета Borland C++.

Возвращаемое       По умолчанию функция matherr возвращает 1 если
значение           ошибка UNDERFLOW или TLOSS, иначе  0. Функция
                   matherr также   может   модифицировать    параметр
                   e->retval,  который  посредством  функции  matherr
                   передается в вызывающую программу.

                   Когда функция matherr возвращает  0,  (означающий,
                   что  обработать  ошибку  она  не  может),  функция
                   _matherr устанавливает переменную errno и печатает
                   сообщение   об   ошибке.

                   Когда функция    matherr    возвращает   ненулевое
                   значение,   (означающее,   что   ошибка    успешно
                   обработана),   глобальная   переменная   errno  не
                   устанавливается   и   сообщение   об   ошибке   не
                   выводится.

Переносимость      matherr доступна на многих компиляторах С,  однако
                   она не поддерживается стандартом ANSI C. matherr в
                   стиле системы UNIX (которая печатает  сообшение  и
                   завершает   выполнение   программы)   поставляется
                   вместе с пакетом Borland C++  в  файле  MATHERR.C.
                   matherr   может  не  поддерживаться  в  дальнейших
                   версиях Borland C++.

Пример:

#include<math.h>
#include<stdio.h>
#include<string.h>

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


max

[Справочник С/C++] - max

max
Функция            Возвращает наибольшее из двух значений.

Синтаксис          #include<stdlib.h>
                   (type)max(a,b);

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

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

Возвращаемое       max возвращает наибольшее из двух значений.
значений

Смотрите также     min.

Пример:

#include<stdlib.h>
int main(void)
{
  int x = 5;
  int y = 6;
  int z;
  z = max(x,y);
  printf("Наибольшее значение: %d\n",z);
  return 0;
}

Вывод:

Наибольшее значение: 6


memccpy, _fmemccpy

[Справочник С/C++] - memccpy, _fmemccpy

memccpy, _fmemccpy
Функция            Копирует блок размером в n байт.

Синтаксис          #include<mem.h>
                   Версия near: void *memccpy(const void *dest,
                                 const void *src, int c, size_t n);

                   Версия far:  void *_fmemccpy(const void *dest,
                                 const void *src, int c, size_t n);

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

Описание           memccpy копирует  блок  из  n  байт из src в dest.
                   Копирование     прекращается     при     следующих
                   обстоятельствах:

                   - Первым копируется символ c.

                   - В dest скопировано n байт.

Возвращаемое       memccpy возвращает указатель на байт, сразуже сле-
значение           дующий за с, если он был скопирован. В противном
                   случае memccpy возвращает NULL.

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

Смотрите также     memcpy, memmove, memset.

Пример:

#include<string.h>
#include<stdio.h>

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");


memchr,_fmemchr

[Справочник С/C++] - memchr,_fmemchr

memchr,_fmemchr
Функция            Просматривает n байт в поисках символа c.

Синтаксис          #include<mem.h>
                   Версия near: void *memchr(const void *s, int c,
                                 size_t n);

                   Версия far:  void *_fmemchr(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<string.h>
#include<stdio.h>

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");


memcmp, _fmemcmp

[Справочник С/C++] - memcmp, _fmemcmp

memcmp, _fmemcmp
Функция            Сравнивает два блока каждый из которых длиной в n
                   байт.

Синтаксис          #include<mem.h>
                   Версия near: void *memcmp(const void *s1, const
                                 void *s2,size_t n);

                   Версия far:  void *_fmemcmp(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<stdio.h>
#include<string.h>

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");


memcpy, _fmemcpy

[Справочник С/C++] - memcpy, _fmemcpy

memcpy, _fmemcpy
Функция            Копирует блок длиной n байт.

Синтаксис          #include<mem.h>
                   Версия near: void *memcpy(void *dst,
                                 const void *src,size_t n);

                   Версия far:  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<stdio.h>
#include<string.h>

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");


memicmp

[Справочник С/C++] - memicmp

memicmp
Функция            Сравнивает n   байт   двух   массивов    символов,
                   игнорируя различие регистров.

Синтаксис          #include<mem.h>
                   Версия near: int memcmp(const void *s1,
                                  const void *s2, size_t n);

                   Версия far:  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<stdio.h>
#include<string.h>

int main(void)
{
   char *buf1 = "ABCDE123";
   char *buf2 = "abcde456";
   int stat;
   stat = memicmp(buf1,buf2,5);
   printf("Строки до позиции 5");
   if(stat)
      printf("не");
   printf("равны");


memmove

[Справочник С/C++] - memmove

memmove
Функция            Копирует блок размером в n байт.

Синтаксис          #include<mem.h>
                   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<string.h>
#include<stdio.h>

int main(void)
{
   char src[] = "******************************";
   char dest[] = "abcdefghijklmnopqrstuvwxyz0123456789";
   printf("Строка назначения перед копированием: %s",dest);
   ptr = memmove(dest,src,26);
   printf("Строка назначения после копирования: %s",dest);


memset, _fmemset

[Справочник С/C++] - memset, _fmemset

memset, _fmemset
Функция            Заполняет блок размером в n байт значениеями c.

Синтаксис          #include<mem.h>
                   Версия near: void *memset(void *s, int c,
                                 size_t n);

                   Версия far:  void *_fmemset(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<string.h>
#include<stdio.h>
#include<mem.h>

int main(void)
{
   char buffer[] = "Hello world\n";
   printf("Буфер перед использованием функции memset:%s\n",buffer);
   memset(buffer,'*',strlen(buffer) - 1);
   printf("Буфер после использованя функции memset:%s\n",buffer);


min

[Справочник С/C++] - min

min
Функция            Возвращает меньшее из двух значений.

Синтаксис          #include<stdlib.h>
                   (type)min(a,b);

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

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

Возвращаемое       min возвращает меньшее из двух значений.
значений

Смотрите также     max.

Пример:

#include<stdlib.h>
#include<stdio.h>

int main(void)
{
  int x = 5;
  int y = 6;
  printf("Наименьшее значение: %d\n",min(x,y));
  return 0;
}

Вывод:

Наименьшее значение: 6


MK_FP

[Справочник С/C++] - MK_FP

MK_FP
Функция            Создает "дальний" адресный указатель.

Синтаксис          #include<dos.h>
                   void far *MK_FP(unsigned seg, unsigned ofs);

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

Описание           MK_FP это    макроопределение,   которое   создает
                   дальний  указатель  из  адреса  сегмента  (seg)  и
                   смещения (ofs).

Возвращаемое       MK_FR возвращает "дальний" указатель.

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

Смотрите также     FP_OFF, FP_SEG, movedata, segread.

Пример:

#include<dos.h>
#include<graphics.h>

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


mkdir

[Справочник С/C++] - mkdir

mkdir
Функция            Создает каталог.

Синтаксис          #include<dir.h>
                   int mkdir(const char *path);

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

Описание           mkdir создает новый каталог  по  имени  данного
                   маршрута.

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

                   EACCES - Доступ запрещен.
                   ENOENT - Нет такого файла или каталога.

Смотрите также     chdir, getcurdir, getcwd, rmdir.

Пример:

#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<dir.h>

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"));


mktemp

[Справочник С/C++] - mktemp

mktemp
Функция            Создает уникальное имя файла.

Синтаксис          #include<dir.h>
                   char *mktemp(char *template);

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

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

                   Параметр template должен представлять собой строку
                   символов с нулевым окончанием и шестью  хвостовыми
                   символами  x.  Данные  6  знаков  X  заменяются на
                   уникальное  сочетание  букв   плюс   точка   таким
                   образом, что две буквы, точка и три буквы суффикса
                   дают в результате новое имя файла.

                   Новое имя  файла  присваивается  после   просмотра
                   имеющихся имен на диске, начиная с имени AA.AAA, и
                   избегая уже существующих имен в том же формате.

Возвращаемое       Если параметр template корректно сформирован,
значение           функция mktemp возвращает адрес символьной строки
                   template. В противном случае она возвращает ноль.

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

Пример:

#include<dir.h>
#include<stdio.h>

int main(void)
{
   /* fname определяет маску для имени файла */
   char *fname = "TXXXXXX", *ptr;
   ptr = mktemp(fname);
   printf("%s\n",ptr);


mktime

[Справочник С/C++] - mktime

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

Синтаксис          #include<time.h>
                   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<stdio.h>
#include<time.h>

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]);


modf

[Справочник С/C++] - modf

modf
Функция            Расщепляет число (double) на целую и дробную
                   части.

Синтаксис          #include<math.h>
                   double modf(double x, double *iptr)

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

Описание           modf разделяет  число  типа  double  на  целую   и
                   дробную части.  Целая часть помещается в ipart,  а
                   дробная часть возвращается.

Возвращаемое       modf возвращает дробную часть x.
значение

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

Смотрите также     fmod, ldexp.

Пример:

#include<math.h>
#include<stdio.h>

int main(void)
{
   double fraction,integer;
   double number = 100000.567;
   fraction = modf(number,&integer);
   printf("Целая и дробная части числа %lf равны %lf и %lf",
           number, integer, fraction);


movedata

[Справочник С/C++] - movedata

movedata
Функция            Копирует n байт.

Синтаксис          #include<mem.h>
                   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 <mem.h>

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


moverel

[Справочник С/C++] - moverel

moverel
Функция            Перемещает текущую   позицию   (CP)   на  заданное
                   расстояние.

Синтаксис          #include <graphics.h>
                   void far moverel(int dx,int dy);

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

Описание           moverel перемещает  текущую  позицию  (CP)  на  dx
                   точек по оси Х и на dy точек по оси Y.

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

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

Смотрите также     moveto.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char msg[80];

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


movetext

[Справочник С/C++] - movetext

movetext
Функция            Копирует текст на экране из одного прямоугольника
                   в другой.

Синтаксис          #include<conio.h>
                   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 и
                   совместимых   с   ней.  Функция  не  совместима  с
                   Windows.

Смотрите также     gettext, puttext.

Пример:

#include<conio.h>
#include<string.h>

int main(void)
{
   char *str = "Это тестовая строка";
   clrscr();
   cputs(str);
   getch();
   movtext(1,1,strlen(str),2,10,10);
   getch();


moveto

[Справочник С/C++] - moveto

moveto
Функция            Перемещает текущую   позицию   (CP)   в   точку  с
                   координатами (x,y).

Синтаксис          #include <graphics.h>
                   void far moveto(int x,int y);

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

Описание           moveto перемещает текущую позицию (CP) в позицию с
                   координатами (x,y) в текущей области просмотра.

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

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

Смотрите также     moverel.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
char msg[80];

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


movmem

[Справочник С/C++] - movmem

movmem
Функция            Копирует блок, длиной length байт.

Синтаксис          #include<mem.h>
                   void movmem(void *src, void *dest,
                    unsigned length);

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

Описание           Функция movmem копирует блок длиной length байт  с
                   исходного  адреса src по адресу dest.  Направление
                   копирования всегда выбирается таким  образом,  что
                   данные  всегда  копируются точно,  даже если блоки
                   перекрываются.

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

Переносимость      movmem уникальна для Borland C++.

Смотрите также     memcpy, memmove, movedata.

Пример:

#include<mem.h>
#include<alloc.h>
#include<stdio.h>
#include<string.h>

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);


norm

[Справочник С/C++] - norm

norm
Функция            Возвращает квадрат       абсолютного       значения
                   комплексного числа.

Синтаксис          #include<complex.h>
                   double norm(complex x);

Файл, содержащий   complex.h
прототип

Описание           При использовании      norm     может     произойти
                   переполнение,  если действительная или мнимая часть
                   будут слишком большими.

Возвращаемое       norm(x) возвращает real(x)*real(x)+imag(x)*imag(x).
значение

Переносимость      Комплексные функции   требуют   С++    и    поэтому
                   непереносимы.

Смотрите также     arg, complex, polar.

Пример:

#include<stream.h>
#include<complex.h>

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";


normvideo

[Справочник С/C++] - normvideo

normvideo
Функция            Устанавливает нормальную интенсивность выводимых
                   символов.

Синтаксис          #include<conio.h>
                   void normvideo(void);

Файл, содержащий   conio.h
прототип

Описание           normvideo восстанавливает  исходное  значение  бита
                   интенсивности  в  поле  атрибутов  текущего   цвета
                   символов.

                   Вызов этой функции  не  отражается  на  на  тексте,
                   находящемся  на  экране,  а  только  на  результате
                   работы  функций,  производящих  вывод  в  текстовом
                   режиме,  прямой  вывод  на консоль,  и только после
                   вызова функции normvideo.

Возвращаемое       Нет.
значение

Переносимость      normvideo работает    только     на     компьютерах
                   совместимых  с  IBM PC.  Аналогичная функции есть в
                   Turbo Pascal. Функция не совместима с Windows.

Смотрите также     highvideo, lowvideo, textattr, textcolor.

Пример:

#include<conio.h>

int main(void)
{
   clrscr();
   lowvideo();
   cprintf("Текст низкой интенсивности");
   highvideo();
   cprintf("Текст высокой интенсивности");
   normvideo();
   cprintf("Текст нормальной интенсивности");


nosound

[Справочник С/C++] - nosound

nosound
Функция            Выключает встроенный динамик.

Синтксис           #include<dos.h>
                   void nosound(void);

Файл, содержащий   dos.h
прототип

Описание           Выключает встроенный динамик, включенный функцией
                   sound.

Возвращаемое       Нет.
значение

Переносимость      nosound работает  только на компьютерах совместимых
                   с IBM PC.  Аналогичная функции есть в Turbo Pascal.
                   Функция не совместима с Windows.

Смотрите также     delay, sound.

Пример:

/* Звук частотой 7 Гц в течении 5 секунд
   История. 7 Гц - это резонансная частота черепной впа-
   дины цыплят. Это было обнаружено эмпирически в Австра-
   лии, на птицефабрике, где при включении такого звука, все
   цыплята, находившиеся достаточно близко, умирали.
   Возможно встроенный динамик вашего компьютера не
   может генерировать такой звук. /

int main(void)
{
  sound(7);
  delay(5000);
  nosound();


open

[Справочник С/C++] - open

open
Функция            Открывает файл для чтения или записи.

Синтаксис          #include <fcntl.h>
                   #include <sys\stat.h>
                   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, dup2, fdopen, filelenth, fopen,
                   freopen, gettime, lseek, lock, _open, read,
                   sopen, _write, write.

Пример:

#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>

int main(void)
{
   int handle;
   char msg[] = "Hello world!";
   if((handle = open("TEST.$$$",O_RDWR)) == -1) {
      perror("Error:");
      return 1;
   }
   _write(handle,msg,strlen(msg));
   _close(Handle);


outport

[Справочник С/C++] - outport

outport
Функция            Производит вывод слова в порт.

Синтаксис          void outport(int portid, int value);

Файл, содержащий   dos.h
прототип

Описание           outport записывает  значение  параметра  value   в
                   выходной порт, определяемый параметром portid.

Возвращаемое       Нет.
значение

Переносимость      Эта функция      уникальна      для      семейства
                   микропроцессоров 8086.

Пример:

#include <stdio.h>
#include <dos.h>

int main(void)
{
   int value = 64;
   int port = 0;
   outport(port,value);
   printf("Значение %d послано в порт %d",value,port);


outportb

[Справочник С/C++] - outportb

outportb
Функция            Производит вывод в порт байта.

Синтаксис          void outport(int portid, unsigned char value);

Файл, содержащий   dos.h
прототип

Описание           outportb - это  макрокоманда,  которая  записывает
                   значение   параметра   value   в   выходной  порт,
                   определяемый параметром portid.

                   При вызове outportb при указанном включаемом файле
                   dos.h,  то outportb рассматривается как  макро,  и
                   расширяется во встроенный машинный код. Если вы не
                   включаете  файл  dos.h,  или  если   вы   отменили
                   outportb  командой  #undef,  то  получите  функцию
                   outportb.

Возвращаемое       Нет.
значение

Переносимость      Эта функция      уникальна      для      семейства
                   микропроцессоров 8086.

Смотрите также     inport, outport, inportb.

Пример:

#include <stdio.h>
#include <dos.h>

int main(void)
{
   int value = 64;
   int port = 0;
   outport(port,value);
   printf("Значение %d послано в порт %d",value,port);


outtext

[Справочник С/C++] - outtext

outtext
Функция             Отображает строку в окне экрана.

Синтаксис           #include <graphics.h>
                    void far outtext(char far *textstring);

Файл, содержащий    graphics.h
прототип

Описание
                   outtext отображает строку текста в окне, используя
                   текущие   установленные   параметры   выравнивания
                   текста,  а  также  текущие  шрифт,  направление  и
                   размер.

                   outtext выводит  текст  в  текущую  позицию.  Если
                   горизонтальное выравнивание текста равно LEFT_TEXT
                   и  направление  вывода  текста  установлено равным
                   HORIZ_DIR,   координата    x    текущей    позиции
                   продвигается с помощью textwidth(textstring).Иначе
                   текущая позиция остается неизменной.

                   Для обеспечения совместимости кодов поддержки  при
                   использовании различных    шрифтов,    используйте
                   textwidth и textheight  для  определения  размеров
                   строки.

                   Замечание. Если строка печатается установленным по
                   умолчанию шрифтом с помощью  функции  outtext,  то
                   любая  часть  строки ,  которая выходит за пределы
                   текущего окна, отсекается.

                   Замечание. outtext  предназначен  для   работы   в
                   графическом режиме и не будет работать в текстовом
                   режиме.

Возвращаемое       Нет.
значение

Переносимость      Эта функция  уникальна  для   Borland   C++.   Она
                   пригодна   только   для   компьютеров   IBM  PC  и
                   совместимых   с   ними,   оснащенных   дисплейными
                   адаптерами,   поддерживающими  графический  режим.
                   Функция не совместима с Windows.

Смотрите также     gettextsettings,outtextxy,settextjustify,
                   textheight, textwidth.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
   /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;
   int midx, midy;

   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1); /* terminate with an error code */
   }

   midx = getmaxx() / 2;
   midy = getmaxy() / 2;

   /* move the C.P. to the center of the screen */
   moveto(midx, midy);

   /* output text starting at the C.P. */
   outtext("This ");
   outtext("is ");
   outtext("a ");
   outtext("test.");

   /* clean up */
   getch();
   closegraph();


outtextxy

[Справочник С/C++] - outtextxy

outtextxy
Функция             Отображает строку в указанной области.

Синтаксис           #include <graphics.h>
                    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.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
   /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;
   int midx, midy;

   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1); /* terminate with an error code */
   }

   midx = getmaxx() / 2;
   midy = getmaxy() / 2;

   /* output text at the center of the screen */
   /* Note: the C.P. doesn't get changed.     */
   outtextxy(midx, midy, "This is a test.");

   /* clean up */
   getch();
   closegraph();


parsfnm

[Справочник С/C++] - parsfnm

parsfnm
Функция            Выделяет имя файла.

Синтаксис          #include <dos.h>
                   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<process.h>
#include<string.h>
#include<stdio.h>
#include<dos.h>

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);


peek

[Справочник С/C++] - peek

peek
Функция            Возвращает содержимое слова памяти с адресом
                   segment:offset.

Синтаксис          #include<dos.h>
                   int peek(unsigned segment, unsigned offset);

Файл, содержащий   dos.h
прототип

Описание           Функция peek  возвращает  содержимое слова памяти,
                   по адресу segment:offset.

                   Если функция  вызывается  при  подключенном  файле
                   dos.h,  она трактуются,  как макрокоманда, которая
                   расширяется  до  встроенного  кода.  Если же вы не
                   подключаете  файл  dos.h  (или  вы  выполнили  для
                   данной функции директиву #undef),  вы будете иметь
                   функцию, а не макрокоманду.

Возвращаемое       Функция peek возвращает значение, хранящееся по
значение           адресу segment:offset.

Переносимость      Функция уникальна для семейства микропроцессоров
                   8086.

Смотрите также     harderr, peekb, poke.

Пример:

#include<stdio.h>
#include<conio.h>
#include<dos.h>

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");


peekb

[Справочник С/C++] - peekb

peekb
Функция            Функция peekb извлекает из памяти байт, записанный
                   по адресу segment:offset.

Синтаксис          #include <dos.h>
                   char peekb( unsigned segment, unsigned offset);

Файл, содержащий   dos.h
прототип

Описание           Функция peekb извлекает из памяти байт, записанный
                   по адресу segment:offset

                   Если функция  вызывается  при  подключенном  файле
                   dos.h,  она трактуются,  как макрокоманда, которая
                   расширяется  до  встроенного  кода.  Если же вы не
                   подключаете  файл  dos.h  (или  вы  выполнили  для
                   данной функции директиву #undef),  вы будете иметь
                   функции, а не макрокоманды.

Возвращаемое       Функция peekb возвращает значение байта с адресом
значение           segment:offset.

Переносимость      Функция уникальна для семейства микропроцессоров
                   8086.

Смотрите также     harderr, peek, pokeb.

Пример:

#include<stdio.h>
#include<conio.h>
#include<dos.h>

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");


perror

[Справочник С/C++] - perror

perror
Функция            Печатает системные сообщения об ошибках.

Синтаксис          #include<stdio.h>
                   void perror (const char *s);

Файл, содержащий   stdio.h
прототип

Описание           Функция perror  выводит   сообщение   об   ошибке,
                   произшедшей в библиотечной функции, в поток stderr
                   (обычно на консоль).

                   Сначала выводится  аргумент  s,  затем  двоеточие,
                   затем   сообщение   об   ошибке,   соответствующее
                   текущему значению глобальной переменной errno, и в
                   конце -  символ  перехода  на  новую  строку.   По
                   соглащению в качестве аргумента функции передается
                   имя файла.

                   Для обеспечения      лучшего      контроля      за
                   форматированием  сообщений,  массив  сообщений  об
                   ошибках,   содержится   в   массиве   sys_errlist.
                   Соответственно,   переменная   errno   может  быть
                   использована в качестве индекса  в  этом  массиве,
                   чтобы   корректно   выделить   строку,  содержащую
                   сообщение с данным номером. Такая строка - элемент
                   массива  -  не  включает в себя символ перехода на
                   новую строку.

                   Параметр sys_nerr   содержит    число    элементов
                   массива.

                   В главе  3  "  Глобальные  переменные"  вы найдете
                   подробную   информацию   о    переменных    errno,
                   sys_errlist, sys_nerr.

Возвращаемое       Нет.
значение

Переносимость      Функция поддерживаются на системах UNIX и стандар-
                   том ANSI C.

Смотрите также     clrerr, eof, _strerror, strerror.

Пример:

#include<stdio.h>

int main(void)
{
   FILE *fp;
   fp = fopen("perror.dat","r");
   if(!fp)
      perror("Не могу открыть файл для чтения.\n");


pieslice

[Справочник С/C++] - pieslice

pieslice
Функция            Рисует и закрашивает сектор круга.

Синтаксис          #include <graphics.h>
                   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  приведен
                   только один пример, повидимому это опечатка. Прим.
                   пер.)

Возвращаемое       Нет.
значение

Переносимость      Эта функция  уникальна  для   Borland   C++.   Она
                   работает   только   на   компьютерах   IBM   PC  и
                   совместимых с    ними,    оснащенных   дисплейными
                   адаптерами,  поддерживающими  графический   режим.
                   Функция не совместима с Windows.

Смотрите также     fillellipse, fill_patterns(перечисляемый тип),
                   graphresult, sector, setfillstyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
/* определить тип закраски и нарисовать сектор */
setfillstyle(EMPTY_FILL,getmaxcolor());
pieslice(midx,midy,stangle,endangle,radius);

/* очистка */
getch();
closegraph();


poke

[Справочник С/C++] - poke

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<dos.h>
#include<conio.h>

int main(void)
{
   clrscr();
   cprintf("Убедитесь, что Scroll lock выключена, и нажмите\
            любую клавишу...\n");
   getch();
   poke(0x0000,0x417,16);
   cprintf("Теперь Scroll lock включена. \n");


pokeb

[Справочник С/C++] - pokeb

pokeb
Функция            Помещает заданный байт в память по адресу
                   segment:offset.

Синтаксис          #include <dos.h>
                   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<dos.h>
#include<conio.h>

int main(void)
{
   clrscr();
   cprintf("Убедитесь, что Scroll lock выключена, и нажмите\
            любую клавишу...\n");
   getch();
   pokeb(0x0000,0x417,16);
   cprintf("Теперь Scroll lock включена. \n");


polar

[Справочник С/C++] - polar

polar
Функция            Возвращает комплексное  число  в  соответствии   с
                   величиной и углом.

Синтаксис          #include<complex.h>
                   complex polar(double mag, double angle);

Файл, содержащий   complex.h
прототип

Описание           polar(mag,angle) аналогично выражению:
                   complex(mag*cos(angle),mag*sin(amgle)).

Возвращаемое       Комплексное число, для данного абсолютного значе-
значение           ния и угла.

Переносимость      Комплексные функции требуют С++, и поэтому непере-
                   носимы.

Смотрите также     arg, complex, norm.

Пример:

#include<stream.h>
#include<complex.h>

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";


poly

[Справочник С/C++] - poly

poly
Функция            Конструирует из заданных аргументов полином.

Синтаксис          #include<math.h>
                   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<stdio.h>
#include<math.h>

/*  полином: 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);


pow

[Справочник С/C++] - pow

pow
Функция            Вычисляет x в степени y.

Синтаксис          Вещественная версия
                   #include<math.h>
                   double pow(double x, double y);

                   Комплексная версия
                   #include<complex.h>
                   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, pow10, sqrt.

Пример:

#include<stdio.h>
#include<math.h>

int main(void)
{
   double x = 4.0,y=3.0;
   printf("%lf в степени %lf = %1f\n",x,y,pow(x,y));


pow10

[Справочник С/C++] - pow10

pow10
Функция            Вычисляет 10 в степени p.

Синтаксис          #include<math.h>
                   double pow10(int p);

Файл, содержащий   math.h
прототип

Описание           pow10 вычисляет 10^p.

Возвращаемое       При успешном завершении pow10 возвращает вычислен-
значение           ное значение 10^p.

                   Результат вычисляется в виде double. Все аргументы
                   считаются   допустимыми,   даже,   если   вызывают
                   переполнение.

Переносимость      Доступна в системах UNIX.

Смотрите также     exp, pow.

Пример:

#include<stdio.h>
#include<math.h>

int main(void)
{
   int p=3;
/* !!! в оригинале double p = 3.0; прим. пер. */
   printf("10 в степени %d = %1f\n",p,pow10(p));


printf

[Справочник С/C++] - printf

printf
Функция            Производит форматированный вывод в stdout.

Синтаксис          #include<stdio.h>
                   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.  Функция  не   совместима   с
                   Windows.

Смотрите также     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 !


putc

[Справочник С/C++] - putc

putc
Функция            Выводит символ в поток.

Синтаксис          #include <stdio.h>
                   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<stdio.h>

int main(void)
{
   char msg[] = "Hello world";
   int i=0;
   while(msg[i])
      putc(msg[i++],stdout);


putch

[Справочник С/C++] - putch

putch
Функция            Выводит символ на экран.

Синтаксис          #include<conio.h>
                   int putch(int c);

Файл, содержащий   conio.h
прототип

Описание           putch выводит  символ  c в текущее текстовое окно.
                   Эта функция производит вывод  в  текстовом  режиме
                   непосредственно  на консоль.  putch не преобразует
                   символ  перевода  строки  (\n)  в  пару:   перевод
                   строки, возврат каретки.

                   Вывод осуществляется  либо  прямо  в  видеопамять,
                   либо  с  помощью  функций  BIOS,  в зависимости от
                   значения глобальной переменной directvideo.

Возвращаемое       При успешном завершении putch возвращает выведен-
значение           ный символ c. При ошибке он возвращает EOF.

Переносимость      putch работает только на компьютерах совместимых с
                   IBM PC. Функция не совместима с Windows.

Смотрите также     cprintf, cputs, getch, getche, putc, putchar.

Пример:

#include<stdio.h>
#include<conio.h>

int main(void)
{
   char ch = 0;
   printf("Введите строку:");
   while(ch != '\r')
   {
      ch = getch();
      putch(ch);


putchar

[Справочник С/C++] - putchar

putchar
Функция            Выводит символ в поток stdout.

Синтаксис          #include <stdio.h>
                   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<stdio.h>

/* определение некоторых символов, предназначенных для рисования
   рамок */
#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');


putenv

[Справочник С/C++] - putenv

putenv
Функция            Добавляет строку символов в текущее описание
                   среды.

Синтаксис          #include<stdlib.h>
                   int putenv(const char *name);

Файл, содержащий   stdlib.h
прототип

Описание           putenv получает  строку  name  и  добавляет  ее  к
                   описанию среды текущего процесса. Например:

                       putenv("PATH=C:\\TC");

                   putenv можно  также  использовать  для модификации
                   или удаления  уже  существующих  переменных  среды
                   текущего   процесса.   Для  удаления  надо  просто
                   добавить пустую переменную (к примеру "MYVAR=").

                   putenv изменяет среду  только  текущего  процесса.
                   При завершении процесса восстанавливается исходная
                   среда.

                   Замечание. Строка, передоваемая putenv должна быть
                   глобальной или статической.  В случае, если строка
                   была локальной или динамической,  то  освобождение
                   памяти приведет к непредсказуемому результату.

Возвращаемое       При успешном завершении putenv возвращает 0, при
значение           ошибке -1.

Переносимость      putenv доступна в системах UNIX.

Смотрите также     getenv.

Пример:

#include<stdio.h>
#include<stdlib.h>
#include<alloc.h>
#include<string.h>
#include<dos.h>

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++]);


putimage

[Справочник С/C++] - putimage

putimage
Функция            Выводит на экран битовый образ.

Синтаксис          #include <graphics.h>
                   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  выполнит  операцию  ИЛИ  над уже
                   находящемся на экране образом и т.д.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для Borland  C++.  Она  работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический  режим.  Функция   не   совместима   с
                   Windows.

Смотрите также     getimage, imagesize, putpixel, setvisualpage.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#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",grapherrormessage(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);


putpixel

[Справочник С/C++] - putpixel

putpixel
Функция            Выводит пиксель в заданную точку экрана.

Синтаксис          #include <graphics.h>
                   void far putpixel(int x, int y,int color);

Файл, содержащий   graphics.h
прототип

Описание           putpixel отображает   точку   цвета   color   и  с
                   координатами (x,y).

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     getpixel, putimage.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<dos.h>

#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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxx = getmaxx();
maxy = getmaxy();
maxcolor = getmaxcolor()+1;
while(!kbhit())
{
/* сбросить генератор случайных чисел */
seed = random(32767);
srand(seed);
for(i=0;i<PIXEL_COUNT;i++)
{
   x = random(maxx);
   y = random(maxy);
   color = random(maxcolor);
   putpixel(x,y,color);
}
delay(DELAY_TIME);
srand(seed);
for(i=0;i<PIXEL_COUNT;i++)
{
   x = random(maxx);
   y = random(maxy);
   color = random(maxcolor);
   if(color == getpixel(x,y);
     putpixel(x,y,0);
}
}
/* очистка */
getch();
closegraph();


puts

[Справочник С/C++] - puts

puts
Функция            Выводит строку в поток stdout.

Синтаксис          #include<stdio.h>
                   int puts(const char *s);

Файл, содержащий   stdio.h
прототип

Описание           Функция puts  копирует  строку  символов с нулевым
                   окончанием в стандартный  выходной  поток  stdout,
                   причем  добавляет в конец символ перехода на новую
                   строку.

Возвращаемое       При успешном завершении, функция puts ненулевое
значение           значение. В противном случае возвращается EOF.

Переносимость      Данная функция поддерживается на системах UNIX и
                   стандартом ANSI  C.  Функция   не   совместима   с
                   Windows.

Смотрите также     cputs, fputs, gets, printf, putchar.


puttext

[Справочник С/C++] - puttext

puttext
Функция            Копирует текст из памяти  на  экран,  в  текстовом
                   режиме.

Синтаксис          #include<conio.h>
                   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. Функция не совместима с
                   Windows.

Смотрите также     gettext, movetext, window.


putw

[Справочник С/C++] - putw

putw
Функция            Помещает в поток целое значение.

Синтаксис          #include <stdio.h>
                   int putw(int w, FILE *stream);

Файл, содержащий   stdio.h
прототип

Описание           putw выводит   целое  в  указанный  поток.  Данная
                   функция  не  вызывает  и   не   ожидает   никакого
                   специального выравнивания в файле.

Возвращаемое       При успешном завершении putw возвращает выведенное
значение           целое w. При ошибке возвращает EOF.

                   Т.к. EOF  является допустимым целым значением,  то
                   для  определения  ошибки   нужно   воспользоваться
                   функцией ferror.

Переносимость      функция поддерживается в системах UNIX.

Смотрите также     getw, printf.

Пример:

#include<stdio.h>
#include<stdlib.h>

#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);


qsort

[Справочник С/C++] - qsort

qsort
Функция            Сортирует данные,   применяя   быстрый    алгоритм
                   сортировки.

Синтаксис          #include<stdlib.h>
                   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<stdio.h>
#include<stdlib.h>
#include<string.h>

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


raise

[Справочник С/C++] - raise

raise
Функция            Посылает программный сигнал выполняемой программе.

Синтаксис          #include<signal.h>
                   int raise(int sig);

Файл, содержащий   signal.h
прототип

Описание           raise посылает   сигнал   sig   программе.    Если
                   программа  загрузила  процедуру обработки сигнала,
                   для сигнала sig,  то запускается данная процедура.
                   Если  процедуры обработки для данного сигнала нет,
                   то производятся действия, определенные для данного
                   сигнала по умолчанию.

                   Имеются следующие типы  сигналов,  определенные  в
                   файле signal.h:

                   --------------------------------------------------
                   Сигнал         Значение
                   --------------------------------------------------
                   SIGABRT        Ненормальное завершение (*)
                   SIGFPE         Неверная операция над числами с
                                  плавающей точкой
                   SIGILL         Неверная инструкция (#)
                   SIGINT         Прерывание по Ctrl_Break.
                   SIGSEGV        Неверный доступ к памяти (#)
                   SIGTERM        Запрос на завершение программы (*)
                   --------------------------------------------------

                   Сигналы помеченные  (*)  не  генерируются  DOS или
                   Borland C++,  во время нормальной  работы.  Однако
                   они  могут генерироваться с помощью функции raise.
                   Сигналя помеченные  (#)  не  могут  генерироваться
                   асинхронно  процессорами  8088  или  8086,  однако
                   могут    генерироваться     некоторыми     другими
                   процессорами (смотри signal).

Возвращаемое       При успешном завершении raise возвращает 0, в про-
значение           тивном случае ненулевое значение.

Переносимость      raise поддерживается системами UNIX и  стандартом
                   ANSI C.

Смотрите также     abort, signal.

Пример:

#include<signal.h>
int main()
{
int a,b;

a = 10;
b = 0;
if(b==0)
/* предварить ошибку при делении на 0 */
   raise(SIGFPE);
a = a / b;


rand

[Справочник С/C++] - rand

rand
Функция            Генератор случайных чисел.

Синтаксис          #include<stdlib.h>
                   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 <stdio.h>
#include <stdlib.h>
int main(void)
{
   int i;
   printf("10 случайных чисел от 0 до 99 \n\n");
   for (i=0; i<10; i++)
       printf("%d\n", rand()%100);


randbrd

[Справочник С/C++] - randbrd

randbrd
Функция            Чтение с диска.

Синтаксис          #include <dos.h>
                   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. Функция не совместима с
                   Windows.

Смотрите также     getdta, randbwd, setdta.

Пример:

#include<process.h>
#include<string.h>
#include<stdio.h>
#include<dos.h>

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);


randbwr

[Справочник С/C++] - randbwr

randbwr
Функция            Запись на диск.

Синтаксис          #include <dos.h>
                   int randbwr(struct fcb *fcbptr, int reccnt);

Файл, содержащий   dos.h
прототип

Описание           Функция randbwd    записывает    recent   записей,
                   используя блок FCB,  адресуемый указателем fcbptr.
                   Эта  операция  выполняется  с  помощью  системного
                   вызова DOS 0x28.

                   Действительное число   записанных   записей  можно
                   определить  проанализировав  поля  random   record
                   блока   FCB.  Данное  поле  после  операции  будет
                   заполнено  информацией   о   числе   действительно
                   записанных записей.

Возвращаемое       В зависимости от результата работы функций randbwd
значение           возвращает следующие значения:

                   0- все записи записаны;

                   1- На диске нет места для записи данных. (Не за-
                      писано ни одной записи.)

                   2- выводимые записи располагаются рядом с адресом
                      0xFFFF (выведено записей столько, сколько воз-
                      можно).

Переносимость      Функция уникальна для DOS. Функция не совместима с
                   Windows.

Смотрите также     randbrd.

Пример:

#include<process.h>
#include<string.h>
#include<stdio.h>
#include<dos.h>

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);


random

[Справочник С/C++] - random

random
Функция            Генератор случайных чисел.

Синтаксис          #include<stdlib.h>
                   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 <stdio.h>
#include <stdlib.h>
#include<time.h>

int main(void)
{
   randomize();
   printf("Случайное число в диапазоне от 0 до 99:", random(100));


randomize

[Справочник С/C++] - randomize

randomize
Функция            Инициализация генератора случайных чисел.

Синтаксис          #include<stdlib.h>
                   #include<time.h>
                   void randomize(void);

Файл, содержащий   stdlib.h
прототип

Описание           Функция randomize     инициализирует     генератор
                   случайных  чисел некоторым случайным числом.  Т.к.
                   randomize  это  макро,  которое  использует  вызов
                   функции  time,  то  мы  рекомендуем включить также
                   файл time.h при использовании этой функции.

Возвращаемое       Нет.
значение

Переносимость      Соответствующая функция существует в Turbo Pascal.

Смотрите также     rand, random, srand.

Пример:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   int i;
   randomize();
   printf("10 случайных чисел от 0 до 99 \n\n");
   for (i=0; i<10; i++)
       printf("%d\n", rand()%100);


read

[Справочник С/C++] - read

read
Функция            Считывает данные из файла.

Синтаксис          #include<io.h>
                   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<stdio.h>
#include<io.h>
#include<alloc.h>
#include<fcntl.h>
#include<process.h>
#include<sys\stat.h>

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);


real

[Справочник С/C++] - real

real
Функция            Возвращает вещественную часть комплексного  числа,
                   или   преобразует   число  из  двоично-десятичного
                   кодирования  обратно  в  float,  double  или  long
                   double.

Синтаксис          Определенное в complex:     Определенное в bcd:
                   #include<complex.h>         #include<bcd.h>
                   double real(complex x);     double real(bcd x);

Файл, содержащий   complex.h                   bcd.h
прототип

Описание           Комплексное число состоит из мнимой и вещественной
                   части. real возвращает вещественную часть.

                   Кроме этого,  вы  можете  использовать  real   для
                   преобразования    числа    в    двоично-десятичном
                   кодировании в число типа float,  double  или  long
                   double.

Возвращаемое       Вещественная часть комплексного числа.
значение

Переносимость      Комплексные функции    требуют   C++   и   поэтому
                   непереносимы.

Смотрите также     bcd, complex, imag.

Пример 1:

#include<stream.h>
#include<complex.h>

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<iostream.h>
#include<bcd.h>

int main(void)
{
   bcd x = 3.1;
   cout << "Двоично десятичное число x =" << x << "\n";
   cout << "Его двоичный эквивиалент: " << real(x) << "\n";


realloc

[Справочник С/C++] - realloc

realloc
Функция            Перераспределяет память.

Синтаксис          #include<stdlib.h>
                   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<stdio.h>
#include<string.h>
#include<alloc.h>

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);


rectangle

[Справочник С/C++] - rectangle

rectangle
Функция            Рисует прямоугольник.

Синтаксис          #include <graphics.h>
                   void far rectangle( int left, int top,
                                      int right, int bottom );

Файл, содержащий   graphics.h
прототип

Описание           rectangle рисует   прямоугольник  линией  текущего
                   вида, толщины и цвета.

                   (left, top)-координаты    левого   верхнего   угла
                   прямоугольника,  а  (right,   bottom)-его   правый
                   нижний угол.

Возвращаемое       Нет.
значение

Переносимость      Эта функция   уникальна   для   Borland  C++.  Она
                   работает  только   на   компьютерах   IBM   PC   и
                   совместимых   с   ними,   оснащенных   дисплейными
                   адаптерами, поддерживающими   графический   режим.
                   Функция не совместима с Windows.

Смотрите также     bar, bar3d, setcolor, setlinestyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int left,top,right,bottom;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


registerbgidriver

[Справочник С/C++] - registerbgidriver

registerbgidriver
Функция            Регистрирует загруженный     пользователем     или
                   встроенный код графического драйвера в графической
                   системе.

Синтаксис          #include <graphics.h>
                   int registerbgidriver(void (*driver)(void));

Файл, содержащий   graphics.h
прототип

Описание           registerbgidriver позволяет пользователю загрузить
                   файл драйвера и "зарегистрировать" драйвер.  Когда
                   его   расположение   в   памяти   будет   сообщено
                   registerbgidriver,  initgraph сможет  использовать
                   зарегистрированный        драйвер.        Драйвер,
                   зарегистрированный   пользователем,   может   быть
                   загружен  с  диска  в динамическую область памяти,
                   либо   преобразован   в   .OBJ-файл   (с   помощью
                   BINOBJ.EXE) и подключен к .EXE .

                   Вызов registerbgidriver  информирует   графическую
                   систему  о том,  что драйвер driver был включен во
                   время   компоновки.   Эта   программа    проверяет
                   связанный  код  для указанного драйвера.  Если код
                   правильный,  то она регистрирует код во встроенной
                   таблице. Связанные драйверы описываются подробно в
                   файле UTIL.DOC.

                   Используя имя  встроенного   драйвера   в   вызове
                   registerbgidriver,   вы   просите   компилятор  (и
                   редактор связей (linker)) встроить объектный  файл
                   с общим именем.

Возвращаемое       registerbgidriver возвращает отрицательный
значение           код графической ошибки, если указанный драй-
                   вер или  шрифт  являются  неверными.  В  противном
                   случае    registerbgidriver    возвращает    номер
                   драйвера.

                   Если вы     регистрируете     драйвер    созданный
                   пользователем,  вы  обязаны   передать   результат
                   выполнения  registerbgidriver  в  initgraph в виде
                   номера драйвера, который будет использоваться.

Переносимость      Эта функция   уникальна   для   Borland  C++.  Она
                   работает  только   на   компьютерах   IBM   PC   и
                   совместимых с   ними,    оснащенных    дисплейными
                   адаптерами,   поддерживающими  графический  режим.
                   Функция не совместима с Windows.

Смотрите также     graphresult, initgrsph, installuserdriver,
                   registerbgifont.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;

/* зарегистрировать драйвер, добавленный в graphics.lib */
errorcode = registerbgidriver(EGAVGA_driver);
if(errorcode < 0)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* нарисовать линию */
line(0,0,getmaxx(),getmaxy());

/* очистка */
getch();
closegraph();


registerbgifont

[Справочник С/C++] - registerbgifont

registerbgifont
Функция            Регистрирует встроенный код векторных символов.

Синтаксис          #include <graphics.h>
                   int registerbgifont(void(*font)(void));

Файл, содержащий   graphics.h
прототип

Описание           Вызов registerbgifont   информирует    графическую
                   систему о том, что шрифт font был включен во время
                   компоновки.  Эта программа проверяет связанный код
                   для указанного шрифта. Если код правильный, то она
                   регистрирует код во встроенной таблице. Встроенные
                   шрифты описываются подробно в разделе BGIOBJ файла
                   UTIL.DOC.

                   Используя имя    встроенного   шрифта   в   вызове
                   registerbgifont, вы просите компилятор (и редактор
                   связей   (linker))   встроить   объектный  файл  с
                   открытым именем.

                   Если вы    регистрируете     шрифт     загруженный
                   пользователем,   вы   обязаны  передать  результат
                   выполнения  registerbgifont  в  initgraph  в  виде
                   номера шрифта, который будет использоваться.

Возвращаемое       registerbgifont возвращает отрицательный
значение           код графической ошибки, если указанный
                   шрифт являются   неверными.   В  противном  случае
                   registerbgifont          возвращает          номер
                   зарегистрированного шрифта.

Переносимость      Эта функция  уникальна  для   Borland   C++.   Она
                   работает   только   на   компьютерах   IBM   PC  и
                   совместимых   с   ними,   оснащенных   дисплейными
                   адаптерами, поддерживающими   графический   режим.
                   Функция не совместима с Windows.

Смотрите также     graphresult, initgraph, installuserdriver,
                   registerbgidriver, settextstyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int midx,midy;

/* зарегистрировать шрифт, добавленный в graphics.lib */
errorcode = registerbgifont(triplex_font);
if(errorcode < 0)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


remove

[Справочник С/C++] - remove

remove
Функция            Удаляет файл.

Синтаксис          #include<stdio.h>
                   int remove(const char *filename);

Файл, содержащий   stdio.h
прототип

Описание           remove удаляет  файл,  имя  которого  определяется
                   параметром  filename.  Это  макрокоманда,  которая
                   просто транслируется в вызов unlink. Если файл был
                   открыт не забудьте его предварительно закрыть.

                   Замечание. Строка  с  именем  файла может включать
                   его полный маршрут.

Возвращаемое       При успешном завершении remove возвращает 0. При
значение           ошибке возвращает -1 и присваивает глобальной пе-
                   ременной errno одно из следующих значений:

                       ENOENT - Такого файла или директории нет.
                       EACCES - Доступ запрещен.

Переносимость     remove доступна в системах UNIX и поддерживается
                  стандартом ANSI C.

Смотрите также    unlink.

Пример:

#include<stdio.h>

int main(void)
{
   char file[80];
   /* запросить имя удаляемого файла */
   printf("Введите имя удаляемого файла */
   gets(file);
   /* удалить файл */
   if(remove(file)==0)
      printf("Файл %s удален.\n");
   else
      perror("remove");


rename

[Справочник С/C++] - rename

rename
Функция            Переименовывает файл.

Синтаксис          #include<stdio.h>
                   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<stdio.h>

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");


restorecrtmode

[Справочник С/C++] - restorecrtmode

restorecrtmode
Функция            Восстанавливает видео-режим,  к исходному, который
                   был перед вызовом initgraph.

Синтаксис          #include <graphics.h>
                   void far restorecrtmode(void);

Файл, содержащий   graphics.h
прототип

Описание           restorecrtmode восстанавливает   исходный    видео
                   режим, который был определен вызовом initgraph.

                   Эта функция  может  использоваться   совместно   с
                   setgraphmode  для  переключения  между текстовым и
                   графическим режимами.  Функция textmode не  должна
                   использоваться  для  этих  целей;она  используется
                   только  если  экран  нужно  перевести  из   одного
                   текстового режима в другой текстовый режим.

Возвращаемое       Нет.
значение

Переносимость      Эта функция   уникальна   для   Borland  C++.  Она
                   работает только   на   компьютерах   IBM   PC    и
                   совместимых   с   ними,   оснащенных   дисплейными
                   адаптерами,  поддерживающими  графический   режим.
                   Функция не совместима с Windows.

Смотрите также     getgraphmode, initgraph, setgraphmode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


rewind

[Справочник С/C++] - rewind

rewind
Функция            Устанавливает указатель в начало потока.

Синтаксис          #include <stdio.h>
                   int rewind(FILE *stream);

Файл, содержащий   stdio.h
прототип

Описание           rewind(stream) эквивалентно    fseek(stream,   0L,
                   SEEK_SET),  за  исключением   того,   что   rewind
                   обнуляет  признаки  конца  файла  и  ошибки,  в то
                   время,  как fseek обнуляет  только  признак  конца
                   файла.

Возвращаемое       Нет.
значение

Переносимость      rewind доступна во всех системах UNIX и поддержи-
                   вается стандартом ANSI C.

Смотрите также     fopen, fseek, ftell.

Пример:

#include<stdio.h>
#include<dir.h>

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);


rmdir

[Справочник С/C++] - rmdir

rmdir
Функция            Удаляет директорию.

Синтаксис          #include<stdio.h>
                   int rmdir(const char *path);

Файл, содержащий   dir.h
прототип

Описание
                   rmdir удаляет каталог,  маршрут которой  указан  в
                   path. Каталог в path:

                   - Должен быть полным.

                   - Не должен быть текущим рабочим каталогом.

                   - Не должен быть корневым каталогом.

Возвращаемое       rmdir возвращает 0, если каталог был успешно
значение           удален. При ошибке возвращает -1 и присваивает
                   глобальной переменной   errno  одно  из  следующих
                   значений:

                   EACCES - Доступ запрещен.
                   ENOENT - Маршрут или файл не найден.

Смотрите также     chdir, getcurdir, getcwd, mkdir.

Пример:

#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<dir.h>

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);


sbrk

[Справочник С/C++] - sbrk

sbrk
Функция            Изменяет размещение сегмента данных в памяти.

Синтаксис          #include<alloc.h>
                   char *sbrk(int incr);

Файл, содержащий   alloc.h
прототип

Описание           Функция sbrk  добавляет  к  завершающему  значению
                   incr байт,  и соответственно выделяет память. incr
                   может быть и отрицательным,  в этом  случае  объем
                   выделенной памяти уменьшается.

                   В случае если для  выделения  памяти  недостаточно
                   свободного места,  sbrk завершается по ошибке и не
                   производит никаких действий.

Возвращаемое       При успешном завершении sbrk возвращает старое
значение           значение. При ошибке, sbrk возвращает -1 и
                   глобальной переменной errno присваивает значение:

                   ENOMEM - Недостаточно памяти.

Переносимость      sbrk доступна   в   системах   UNIX.   Функция  не
                   совместима с Windows.

Смотрите также     brk.

Пример:

#include<stdio.h>
#include<alloc.h>

int main(void)
{
   printf("Изменение выделенного объема памяти с помощью sbrk\n");
   printf("Перед вызовом sbrk свободны %lu байт.\n",
          (unsigned long)coreleft());
   sbrk(1000);
   printf("После вызова sbrk свободны %lu байт.\n",
          (unsigned long)coreleft());


scanf

[Справочник С/C++] - scanf

scanf
Функция            Выполняет форматированный ввод из потока stdin.

Синтаксис          #include<stdio.h>
                   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.  Определены  у  Кернигана  и
                   Ритчи. Функция не совместима с Windows.

Смотрите также     atof, cscanf, fscanf, getc, printf, sscanf,
                   vfscanf, vsscanf.

#include<stdio.h>
#include<conio.h>

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<entries; ++loop);
      printf("%4d | %20s | %5d | %15.2lf\n",
      loop+1,
      entry[loop].name,
      entry[loop].age,
      entry[loop].salary);
   printf("-----------------------------------------------------\n");


searchpath

[Справочник С/C++] - searchpath

searchpath
Функция            Просматривает маршрут в поисках файла.

Синтаксис          #include<dir.h>
                   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 <stdio.h>
#include <dir.h>

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)


sector

[Справочник С/C++] - sector

sector
Функция            Рисует и закрашивает эллиптические сектора.

Синтаксис          #include <graphics.h>
                   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).

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для Borland  C++.  Она  работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     arc, circle, ellipse, getarccoords,
                   getaspectratio, graphresult, pieslice,
                   setfillpattern, setfillstyle,
                   setgraphbufsize.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* цикл по шаблонам */
for(i=EMPTY_FILL; i<USER_FILL;i++)
{
   /* определить шаблон */
   setfillstyle(i,getmaxcolor());
   /* нарисовать эллиптический сектор */
   sector(midx,midy,stangle,endangle,xradius,yradius);
   getch();
}

/* очистка */
closegraph();


segread

[Справочник С/C++] - segread

segread
Функция            Считывает значения сегментных регистров.

Синтаксис          #include <dos.h>
                   void segread(struct SREGS *segp);

Файл, содержащий   dos.h
прототип

Описание           Функция segread    помещает    текущие    значения
                   сегментных  регистров  в   структуру,   адресуемую
                   параметром segp.

                   Данный вызов предлагается использовать совместно с
                   функциями intdosx и int86x.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для процессоров семейства 8086.

Смотрите также     FP_OFF, intdos, int86,int86x, intdosx, MK_FP,
                   movedata.

Пример:

#include<stdio.h>
#include<dos.h>

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);


setactivepage

[Справочник С/C++] - setactivepage

setactivepage
Функция            Устанавливает активную страницу для графического
                   вывода.

Синтаксис          #include <graphics.h>
                   void far setactivepage(int page);

Файл, содержащий   graphics.h
прототип

Описание           setactivepage делает страницу page активной.  Весь
                   последующий графический вывод  будет  направляться
                   на эту страницу.

                   Активной графической  страницей  может  быть   та,
                   которую  вы  видите  на  экране,  хотя  это  и  не
                   обязательно. Это зависит от количества графических
                   страниц в вашей системе.  Только графические платы
                   EGA,  VGA  и   Hercules   поддерживают   несколько
                   страниц.

Возвращаемое       Нет.
значение

Переносимость      Эта функция   уникальна   для   Borland  C++.  Она
                   работает только   на   компьютерах   IBM   PC    и
                   совместимых   с   ними,   оснащенных   дисплейными
                   адаптерами,  поддерживающими  графический   режим.
                   Функция не совместима с Windows.

Смотрите также     setvisualpage.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


setallpalette

[Справочник С/C++] - setallpalette

setallpalette
Функция            Изменяет всю палитру красок.

Синтаксис          #include <graphics.h>
                   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

          Таблица 2.6. Таблица цветов.
          -----------------------------------------------------
                    Таблица доступных цветов
          -----------------------------------------------------
                 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) а
                   текущая палитра останется без изменений.

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический  режим.  Функция   не   совместима   с
                   Windows.

Смотрите также     getpalette, getpalettesize, graphresult,
                   setbkcolor, setcolor, setpalette.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


setaspectratio

[Справочник С/C++] - setaspectratio

setaspectratio
Функция            Изменяет корректитующий фактор характеристического
                   отношения, установленного по умолчанию.

Синтаксис          #include <graphics.h>
                   void far setaspectratio(int xasp,int yasp);

Файл, содержащий   graphics.h
прототип

Описание           setaspectratio испльзуется     для      изменения,
                   установленного  по  умолчанию  характеристического
                   отношения графической системы.  Характеристическое
                   отношение  используется  графической  системой для
                   того,  чтобы убедиться,  что  окружность  рисуется
                   круглой.   Если   окружность  на  экране  выглядит
                   эллипсом,  монитор плохо настроен.  Это может быть
                   исправлено  в  аппаратном  обеспечении посредством
                   перенастройки монитора, или это может быть сделано
                   в пограммном обеспечении, используя setaspectratio
                   для установки характеристического  отношения.  Для
                   получения  текущего  характеристического отношения
                   для системы вызывается getaspectratio.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический  режим.  Функция   не   совместима   с
                   Windows.

Смотрите также     circle, getaspectratio.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int xasp,yasp,midx,midy;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


setbkcolor

[Справочник С/C++] - setbkcolor

setbkcolor
Функция            Устанавливает текущий цвет фона, используя
                   палитру.

Синтаксис          #include <graphics.h>
                   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,  т.к. он
                   всегда устанавливает цвет фона в черный).

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     getbcolor, setallpalette, setcolor, setpalette.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


setblock

[Справочник С/C++] - setblock

setblock
Функция            Модифицирует размер ранее выделенного сегмента
                   памяти.

Синтаксис          #include<dos.h>
                   int setblock(unsigned segx, unsigned newsize);

Файл, содержащий   dos.h
прототип

Описание           setblock изменяет размер сегмента памяти.  segx  -
                   адрес  сегмента,  который  был  получен при вызове
                   функции allocmem.  newsize - это новый необходимый
                   размер сегмента в параграфах.

Возвращаемое       setblock возвращает -1 при успешном завершении.
значение           При возникновении ошибки она возвращает размер
                   в параграфах самого большого блока и устанавливает
                   соответствующее значение в переменной _doserrno.

Переносимость      setblock уникальна для DOS.  Функция не совместима
                   с Windows.

Смотрите также     allocmem, freemem.

Пример:

#include<dos.h>
#include<alloc.h>
#include<stdio.h>
#include<stdlib.h>

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);


setbuf

[Справочник С/C++] - setbuf

setbuf
Функция            Назначает буфер для потока stream.

Синтаксис          #include <stdio.h>
                   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<stdio.h>

/* 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);


setcbrk

[Справочник С/C++] - setcbrk

setcbrk
Функция            Устанавливает control-break.

Синтаксис          #include<dos.h>
                   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<dos.h>
#include<conio.h>
#include<stdio.h>

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");


setcolor

[Справочник С/C++] - setcolor

setcolor
Функция            Устанавливает текущий цвет рисования, используя
                   палитру.

Синтаксис          #include <graphics.h>
                   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)  выбирается
                   желтый цвет рисунка.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для Borland C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также     getcolor, getmaxcolor, graphresult,
                   setallpalette, setbkcolor, setpalette.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(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();


setdate

[Справочник С/C++] - setdate

setdate
Функция            Устанавливает дату DOS.

Синтаксис          #include <dos.h>
                   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<stdio.h>
#include<process.h>
#include<dos.h>

int main(void)
{
   struct date reset;
   reset.da_year = 2001;
   reset.da_mon  = 1;
   reset.da_day  = 1;
   setdate(&reset);
   system("date");


setdisk

[Справочник С/C++] - setdisk

setdisk
Функция            Устанавливает спецификацию текущего дисковода.

Синтаксис          #include<dir.h>
                   int setdisk(int drive);

Файл, содержащий   dir.h
прототип

Описание           setdisk устанавливает      текущим       дисковод,
                   определяемый параметром drive (0 - A, 1 - B, 2 - C
                   и т. д.). Эквивалентно вызову функции DOS 0х0Е.

Возвращаемое       setdisk возвращает общее число доступных дисково-
значение           дов.

Переносимость      setdisk уникальна для DOS.

Смотрите также     getdisk.

Пример:

#include<stdio.h>
#include<dir.h>

int main(void)
{
   int maxdrives;
   maxdrives = setdisk(2);
   printf("Доступно %d логических устройств\n",maxdrives);


setdta

[Справочник С/C++] - setdta

setdta
Функция            Устанавливает адрес DTA. (Область связи с диском).

Синтаксис          #include<dos.h>
                   void setdta(char far *dta);

Файл, содержащий   dos.h
прототип

Описание           setdta изменяет  текущий  адрес  области  связи  с
                   диском (DTA) по значению параметра dta.

Возвращаемое       Нет.
значение

Переносимость      setdta уникальна для DOS.

Смотрите также     getdta.

Пример:

#include<process.h>
#include<string.h>
#include<stdio.h>
#include<dos.h>

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);


setfillpattern

[Справочник С/C++] - setfillpattern

setfillpattern
Функция            Выбирает определенный пользователем шаблон
                   закраски.

Синтаксис          #include <graphics.h>
                   void far setfillpattern(char far *upattern,
                                            int color);

Файл, содержащий   graphics.h
прототип

Описание           setfillpattern аналогична функции setfillstyle, за
                   исключением   того,  что  вы  используете  ее  для
                   установки определенного пользователем шаблона 8  x
                   8 вместо встроенных шаблонов.

                   upattern - указатель на  последовательность  из  8
                   байт,  где каждый байт соответствует 8-ми пикселям
                   шаблона. Каждый бит шаблонного байта установленный
                   в 1, вызывает отображение соответствующего пиксела
                   на экране.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для Borland C++. Она работает
                   только на компьютерах IBM PC и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также     getfillpattern, getfillsettings,
                   graphresult, sector, setfillstyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxx = getmaxx();
maxy = getmaxy();
setcolor(getmaxcolor());
/* выбрать пользовательский шаблон */
setfillpattern(pattern,getmaxcolor());
/* заполнить экран с помощью этого шаблона */
bar (0,0,maxx,maxy);
/* очистка */
getch();
closegraph();


setfillstyle

[Справочник С/C++] - setfillstyle

setfillstyle
Функция            Устанавливает шаблон и цвет заполнения.

Синтаксис          #include <graphics.h>
                   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 использует текущий цвет фона.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический  режим.  Функция   не   совместима   с
                   Windows.

Смотрите также     bar, bar3d, fillpoly, floodfill,
                   getfillsettings, graphresult, pieslice,
                   sector, setfillpattern.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

/* имена поддерживаемых типов заполнения */
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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
for(style=EMPTY_FILL;style<USER_FILL;style++)
{
   /* установить тип заполнения */
   setfillstyle(style,getmaxcolor());
   /* преобразовать в строку */
   strcpy(stylestr,fname[style]);
   /* заполнить экран с помощью этого шаблона */
   bar (0,0,maxx,maxy);
   /* вывести сообщение */
   outtextxy(midx,midy,stylestr);
   /* ждать нажатия клавиши */
   getch();
   cleardevice();
}

/* очистка */
getch();
closegraph();


setftime

[Справочник С/C++] - setftime

setftime
Функция            Устанавливает дату и время создания файла.

Синтаксис          #include <io.h>
                   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<stdio.h>
#include<process.h>
#include<fcntl.h>
#include<io.h>

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.$$$");


setgraphbufsize

[Справочник С/C++] - setgraphbufsize

setgraphbufsize
Функция            Изменяет размер внутреннего графического буфера.

Синтаксис          #include <graphics.h>
                   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 возвращает предыдущий размер
значение           встроенного буфера.

Переносимость      Функция уникальна для Borland  C++.  Она  работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     closegraph, _graphfreemem, _graphgetmem,
                   initgraph, sector.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#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",grapherrormessage(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();


setgraphmode

[Справочник С/C++] - setgraphmode

setgraphmode
Функция            Переводит систему в графический режим, очищает
                   экран.

Синтаксис          #include <graphics.h>
                   void far setgraphmode(int mode);

Файл, содержащий   graphics.h
прототип

Описание           setgraphmode выбирает графический  режим  отличный
                   от установленного по умолчанию функцией initgraph.
                   mode   должен   быть   режимом,   допустимым   для
                   используемого драйвера. setgraphmode очищает экран
                   и  устанавливает  все   графические   величины   в
                   значение по умолчанию (CP,  палитра,  цвет, окно и
                   т.д.).

                   Вы можете  использовать  setgraphmode  совместно с
                   restorecrtmode для переключения между  графическим
                   и текстовым режимами.

Возвращаемое       Если вы задаете setgraphmode несуществующий
значение           для используемого драйвера режим, то graphresult
                   вернет значение -10 (grInvalidMode).

Переносимость      Функция уникальна для Borland  C++.  Она  работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     getgraphmode, getmoderange, graphresult,
                   initgraph, restorecrtmode.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


setjmp

[Справочник С/C++] - setjmp

setjmp
Функция            Устанавливает нелокальный переход.

Синтаксис          #include <setjmp.h>
                   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.  Функция  не   совместима   с
                   Windows.

Смотрите также     longjmp, signal.

Пример:

#include <stdio.h>
#include <process.h>
#include <setjmp.h>

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);


setlinestyle

[Справочник С/C++] - setlinestyle

setlinestyle
Функция            Устанавливает толщину и тип линии.

Синтаксис          #include <graphics.h>
                   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, а текущий тип
                   линии останется без изменений.

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический  режим.  Функция   не   совместима   с
                   Windows.

Смотрите также     arc, bar3d, circle, drawpoly, ellipse,
                   getlinesettings, graphresult, line, linerel
                   lineto, pieslice, rectangle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/* имена поддерживаемых типов линий */
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",grapherrormessage(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();


setlocale

[Справочник С/C++] - setlocale

setlocale
Функция            Выбирает locale.

Синтаксис          #include<locale.h>
                   char *setlocale(int category,char *locale);

Файл, содержащий   locale.h
прототип

Описание           Borland C++  в настоящее время поддерживает только
                   "С" locale,  поэтому вызов этой функции  не  будет
                   иметь ни какого смысла.

                   Аргумент category   может   принимать    следующие
                   значения:

                   LC_ALL
                   LC_COLLATE
                   LC_CTYPE
                   LC_MONETARY
                   LC_NUMERIC
                   LC_TIME

Возвращаемое       Если выбор прошел удачно, то возвращается строка
значение           содержащая старое значение. При ошибке возвра-
                   щается 0.

Переносимость      setlocale поддерживается стандартом ANSI C.

Смотрите также     localeconv.

Пример:

#include<locale.h>
#include<stdio.h>

int main(void)
{
   char *old_locale;
   /* в Borland C++ поддерживается только "C" */
   old_locale = setlocale(LC_ALL,"C");
   printf("Old locale was %s\n",old_locale);


setmem

[Справочник С/C++] - setmem

setmem
Функция            Присваивает значение всем байтам некоторой области
                   памяти.

Синтаксис          #include<mem.h>
                   void setmem(void *dest, unsigned len, char value);

Файл, содержащий   mem.h
прототип

Описание           setmem присваивает  всем  байтам  блока  памяти  с
                   адресом dest и длиной len значение value.

Возвращаемое       Нет.
значение

Переносимость      setmem уникальна для микропроцессоров семейства
                   8086.

Смотрите также     memset, strset.

Пример:

#include<stdio.h>
#include<alloc.h>
#include<mem.h>

int main(void)
{
   char *dest;
   dest = calloc(21,sizeof(char));
   setmem(dest,20,'c');
   printf("%s\n",dest);


setmode

[Справочник С/C++] - setmode

setmode
Функция            Устанавливает режим открытия файла.

Синтаксис          #include<fcntl.h>
                   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<stdio.h>
#include<fcntl.h>
#include<io.h>

int main(void)
{
   int result;
   result = setmode(fileno(stdprn),O_TEXT);
   if(result == -1)
      printf("Режим не допустим\n");
   else
      printf("Режим установлен.\n");


setpalette

[Справочник С/C++] - setpalette

setpalette
Функция            Изменяет один цвет в палитре.

Синтаксис          #include <graphics.h>
                   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) а
                   текущая палитра останется без изменений.

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический  режим.  Функция   не   совместима   с
                   Windows.

Смотрите также     getpalette, graphresult, setbkcolor, setcolor,
                   setrrgbpalette.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxcolor = getmaxcolor();
ht = 2*textheight("W");
/* вывести цвета по умолчанию */
for(color=0;color<maxcolor; color++);
{
   setcolor(color);
   sprintf(msg,"Color %d",color);
   outtextxy(1,y,msg);
   y += ht;
}
/* ожидать нажатия клавиши */
getch();
/* присвоить цветам по одному, значение черного */
for(color=0;color<maxcolor; color++);
{
   setpalette(color,BLACK);
   getch();
}

/* очистка */
closegraph();


setrgbpalette

[Справочник С/C++] - setrgbpalette

setrgbpalette
Функция            Позволяет пользователю определять цвета для
                   IBM 8514.

Синтаксис          #include <graphics.h>
                   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.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для Borland  C++.  Она  работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     setpalette.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
/* получить копию палитры */
getpalette(&pal);
for(i=0;i<pal.size;i++);
{
   setrgbpalette(pal.colors[i],i*4,i*4,i*4);
/* вывести сообщение */
ht = getmaxy()/16;
xmax = getmaxx();
y=0;
for(i=0;i<pal.size;i++);
{
   setfillstyle(SOLID_FILL,i);
   bar(0,y,xmax,y+ht);
   y += ht;
}
/* очистка */
getch();
closegraph();


settextjustify

[Справочник С/C++] - settextjustify

settextjustify
Функция            Устанавливает выравнивание текста для графических
                   функций.

Синтаксис          #include <graphics.h>
                   void far settextjustify(int horiz,int vert);

Файл, содержащий   graphics.h
прототип

Описание           Выводимый текст,  после обращения к settextjustify
                   будет   выравнен   горизантально  или  вертикально
                   относительно текущей позиции  (СР).  По  умолчанию
                   устанавливается выравнивание текста 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, а текущее
                   выравнивание текста останется без изменений.

Переносимость      Функция уникальна для Borland  C++.  Она  работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     gettextsettings, graphresult, outtext,
                   settextstyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/* прототип функции */
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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
/* цикл по выравниваниям */
for(hj=LEFT_TEXT;hj<RIGHT_TEXT;hj++)
   for(vj=LEFT_TEXT;vj<RIGHT_TEXT;vj++)
   {
      cleardevice();
      /* установить выравнивание текста */
      settextjustify(hj,vj);
      /* создать строку сообщений */
      sprintf(msg,"%s %s",hjust[hi],vjust[vj]);
      /* создать крестик на экране */
      xat(midx,midy);
      /* вывести сообщение */
      outtextxy(midx,midy,msg);
      getch();
   }
/* очистка */
getch();
closegraph();
return 0;
}
/* функция рисует крестик по координатам x и y */
void xat(int x, int y)
{
   line(x-4,y,x+4,y);
   line(x,y-4,x,y+4);


settextstyle

[Справочник С/C++] - settextstyle

settextstyle
Функция            Устанавливает текущие характеристики текста для
                   графического вывода.

Синтаксис          #include <graphics.h>
                   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, поставляемом вместе с Borland 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   для
                   определения размера шрифта.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна  для  Borland C++.  Она работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический  режим.  Функция   не   совместима   с
                   Windows.

Смотрите также     gettextsettings, graphresult,
                   installuserfont, settextjustify, setusercharsize,
                   textheight, textwidth.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/* имена поддерживаемых шрифтов */
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",grapherrormessage(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
settextjustify(CENTER_TEXT,CENTER_TEXT);
/* цикл по шрифтам */
for(style=DEFAULT_FONT;style<GOTHIC_FONT;style++)
{
   cleardevice();
   if(style==TRIPLEX_FONT)
      size = 4;
   /* установить тип шрифта */
      settextstyle(style,HORIZ_DIR,size);
      /* вывести сообщение */
      outtextxy(midx,midy,fname[style]);
      getch();
   }
/* очистка */
getch();
closegraph();


settime

[Справочник С/C++] - settime

settime
Функция            Устанавливает системное время.

Синтаксис          #include<dos.h>
                   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<stdio.h>
#include<dos.h>

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);


setusercharsize

[Справочник С/C++] - setusercharsize

setusercharsize
Функция            Позволяет пользователю  изменять ширину и высоту
                   символов для векторных шрифтов.

Синтаксис          #include <graphics.h>
                   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;

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для Borland  C++.  Она  работает
                   только на компьютерах IBM PC и совместимых с ними,
                   оснащенных дисплейными адаптерами, поддерживающими
                   графический   режим.   Функция   не  совместима  с
                   Windows.

Смотрите также     gettextsettings, graphresult, settextsyle.

Пример:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormessage(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();


setvbuf

[Справочник С/C++] - setvbuf

setvbuf
Функция            Назначает буфер для потока stream.

Синтаксис          #include <stdio.h>
                   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 <stdio.h>

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);


setvect

[Справочник С/C++] - setvect

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<stdio.h>
#include<dos.h>
#include<conio.h>

#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);