Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Справка функциям С++.doc
Скачиваний:
61
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

Pieslice

-----------------------------------------------------------------

НазначениеВычерчивает и заполняет сектор круга

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

void far pieslice(int x, int y, int stangle,

int endangle, int radius);

Прототип в graphics.h

Замечанияpieslise вычерчивает и заполняет ceктор круга с

центром в (x,y) и радиусом, задаваемым в

radius. Размеры сектора определяются начальными

и конечными значениями угла, задаваемыми в

stangle и endangle. При вычерчивании сектора

используется текущее значение цвета для

вычерчивания, а при заполнении используется

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

Углы для pieslise задаются в градусах. Они

изменяются против часовой стрелки, при этом 0

градусов соответствует положению часовой

стрелки в 3 часа, 90 градусов - в 12 часов и

т.д.

Примечание. Если вы используете CGA или

монохромный адаптер, то применение примеров

программ из этой книги, иллюстрирующих

использование графических функций, может не

дать ожидаемых результатов. Если ваша система

работает с CGA или монохромным адаптером, то

используйте значение 1 (единица) вместо

символической константы цвета и обратитесь ко

второму примеру, относящемуся к arc, чтобы

понять, как нужно использовать функцию pieslise

ВозвращаемоеНет

значение

ПереносимостьЭта функция работает только на IBM PC и

совместимых компьютерах с графическими

контроллерами

См. также fillellipse,fill_patterns(перечислимый тип),

graphresult,sector,setfillstyle

Примеры См. arc

-----------------------------------------------------------------

poke

-----------------------------------------------------------------

НазначениеЗаписывает целочисленное значение в память по

адресу segment:offset

Синтаксис void poke(unsigned segment, unsigned offset,

int value);

Прототип вdos.h

Замечанияpoke помещает целочисленное значение value в

память по адресу segment:offset

Если эта программа вызываeтся при включенном

dos.h, то он будет интерпретироваться как

макрос и будет включен в тело программы. Если

вы не включили dos.h или включили его, но

отменили описание макроса poke с помощью #undef

poke, то poke будет интерпретироваться как

вызов функции.

ВозвращаемоеНет

значение

Переносимостьpoke уникальна для семейства 8086.

См. также harderr,peek,pokeb

-----------------------------------------------------------------

pokeb

-----------------------------------------------------------------

НазначениеЗаписывает значение байта в память по адресу

segment:offset

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

void pokeb(unsigned segment,

unsigned offset, char value);

Прототип вdos.h

Замечанияpokeb запоминает значение байта value в памяти

по адресу segment:offset.

Если эта программа вызываeтся при включенном

dos.h, то он будет интерпретироваться как

макрос и будет включен в тело программы. Если

вы не включили dos.h или включили его, но

отменили описание макроса pokeb с помощью

#undef pokeb, то pokeb будет интерпретироваться

как вызов функции.

ВозвращаемоеНет

значение

Переносимостьpokeb уникальна для семейства 8086.

См. также peekb, poke

-----------------------------------------------------------------

poly

-----------------------------------------------------------------

НазначениеФормирует полином из аргументов

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

double poly (double x, int degree,

double coeffs[]);

Прототип в math.h

Замечанияpoly формирует полином от х степени degree с

коэффициентами coeff0], coeff[1],...,

coeff[degree]. Например, при n=4 формируется

следующий полином:

4 3 2

coeffs[4]x + coeffs[3]x + coeffs[2]x +

coeffs[1]x + coeffs[0]

Возвращаемоеpoly возвращает значение полинома, вычисленное

значениедля заданного x.

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

-----------------------------------------------------------------

pow

-----------------------------------------------------------------

НазначениеВычисляет значения х в степени y

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

double pow(double x, double y);

Прототип вmath.h

y

Замечания pow вычисляет x

ВозвращаемоеПри успешном завершении pow возвращает

ззначение вычисленное значение x в степени y.

При некоторых значениях аргументов функции pow

при вычислении результата происходит

переполнение. В этом случае pow возвращает

значение HUGE_VAL. Если в результате получается

чрезмерно большая величина, то errno принимает

значение:

ERANGE Результат выходит за диапазон

Если аргумент х функции pow меньше или равен 0,

и y - не целое число, то errno принимает

значение:

EDOM Нарушение области определения функции

При этом pow возвращает отрицательную величину

HUGE_VAL.

Если оба аргумента x и y равны 0, то функция

pow возвращает 1.

Обработка ошибок функции pow может быть

изменена с помощью функции matherr.

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

ANSI C

См. также exp,pow10,sqrt

-----------------------------------------------------------------

pow10

-----------------------------------------------------------------

НазначениеВычисляет значение 10 в степени p

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

double pow10(int p);

Прототип вmath.h

p

Замечания pow10 вычисляет 10

ВозвращаемоеПри успешном завершении pow10 p возвращает

значениевычисленное значение 10 .

Тип результата обычно соответствует long

double. Допустимы любые аргументы, поэтому

могут происходить переполнение или потеря

значащих разрядов.

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

См. также exp, pow

-----------------------------------------------------------------

printf

-----------------------------------------------------------------

НазначениеОсуществляет форматный вывод в stdout

Синтаксис int printf(const char *format[,argument,...]);

Прототип вstdio.h

Замечания

printf принимает несколько аргументов,

применяет к каждому спецификацию формата,

содержащегося в форматной строке, задаваемой в

format, и выводит форматированные данные в

stdout. Должно быть одинаковое количество

спецификаций формата и аргументов

Форматная строка

Форматная строка, присутсвующая при всех

вызовах функций ...printf, управляет

преобразованием, форматированием и выводом

аргументов функций. Должно быть задано

достаточное количество аргументов для

форматирования; если их будет недостаточно, то

результат будет непредсказуемым и, возможно,

катастрофическим. Лишние аргументы (если их

число больше, чем требуется для форматирования)

просто игнорируются.

Форматная строка - это строка символов,

содержащая два типа объектов - обычные символы

и спецификации преобразований.

.Обычные символы просто копируются один в один

в выходной поток.

.Спецификации преобразований извлекают

аргументы из списка аргументов и подвергают их

форматированию.

Спецификации формата

Спецификации формата функций ...printf имеют

следующую форму:

% [флаги] [ширина] [.точность] [F|N|h|l|L] тип

Каждая спецификация преобразования начинается с

символа процента (%), после чего следуют в при-

веденном ниже порядке:

- необязательная последовательность флаговых

знаков;

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

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

- необязательный модификатор принимаемого раз-

мера;

- символ типа преобразования.

Необязательные компоненты форматной строки

Ниже приводятся сведения об управлении форматным выводом с

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

входящих в форматную строку.

-----------------------------------------------------------------

Символ или Чем управляет или что определяет

спецификатор

-----------------------------------------------------------------

Флаги выравнивание вывода, числовые знаки, десятичные

точки, конечные нули, восьмиричные и десятичные

префиксы;

Ширина минимальное число печатаемых знаков, дополняемых

пробелами или нулями;

Точность максимальное число печатаемых знаков; для целых-

минимальное число печатаемых знаков;

Размер замена размера аргумента, принимаемого по умол-

чанию

N- указатель типа near

F- указатель типа far

h = короткое целое

l = длинное целое

L = длинное целое двойной точности

-----------------------------------------------------------------

Символы типа преобразования функций ...printf

В следующей таблице приводится список символов типа пре-

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

из этих символов и формат выполняемого вывода.

Приводимая информация основана на предположении, что в

спецификацию формата не включены флаговые символы, спецификаторы

ширины и точности или модификаторы входного размера. Чтобы уви-

деть, как влияет на вывод функций ...printf использование до-

полнительных символов и спецификаторов,обратитесь к таблице,

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

-----------------------------------------------------------------

Символ Входной Формат вывода

типа аргумент

-----------------------------------------------------------------

-----------------------------------------------------------------

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 число с плавающей знаковое число в форме e или f

точкой в зависимости от заданного

значения и точности.

Конечные нули и десятичная

точка печатаются только в

случае необходимости

E число с плавающей Аналогично e, но с E для

точкой экспоненты

G число с плавающей Аналогично g, но с G для

точкой экспоненты в случае использо-

вания формата е

-----------------------------------------------------------------

-----------------------------------------------------------------

Символ Входной Формат вывода

типааргумент

-----------------------------------------------------------------

Символы

-----------------------------------------------------------------

с символ одиночный символ

s указатель строки печатаются символы до появле-

ния 0-ограничителя либо до

достижение требуемой точности

% нет печатается символ %

----------------------------------------------------------------

----------------------------------------------------------------

Символ Входной Формат вывода

типааргумент

----------------------------------------------------------------

Указатели

----------------------------------------------------------------

n указатель на целое сохраняется (в ячейке, на ко-

торую указывает входной аргу-

мент) число символов, напеча-

танных к данному моменту

p указатель входной аргумент печатается

как указатель

Указатели типа far печатаются

в виде XXXX:YYYY.

Указатели типа near печатают-

ся в виде YYYY (только

смещение)

-----------------------------------------------------------------

Соглашения

В следующей таблице приведены соглашения, соответствующие раз-

личным типам спецификации.

-----------------------------------------------------------------

СимволыСоглашения

-----------------------------------------------------------------

e или E Аргумент преобразуется в форму

[-]d.ddd...e[+/-]ddd, где:

- десятичной точке предшествует одна цифра;

- количество цифр после десятичной точки

соответствует точности;

- экспоненциальное представление всегда

содержит по крайней мере 2 разряда

f Аргумент преобразуется в десятичное

представление [-]ddd.ddd..., где число цифр

после десятичной точки соответствует точности

(если задана ненулевая точность).

g или G Аргумент печатается в форме e, E или f с

точностью, соответствующей числу значащих

чифр. Конечные нули удаляются,а десятичная

точка появляется только при необходимости.

Аргумент печатается в форме е или f с теми же

ограничениями, если символом преобразования

является g, и в форме E, если символом

преобразования G. Форма e используется в

случае, если результат преобразования:

а) больше, чем точность или

б) меньше, чем -4

x или X Для x преобразования при выводе появятся сим-

волы a, b, c,d,e,f; для X преобразования-

символы A, B, C, D, E, F.

-----------------------------------------------------------------

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

дятся как +INF и -INF. Нечисловые значения IEEE выводятся

как +NAN или -NAN.

Флаговые символы

Флаговыми символами являются: минус(-), плюс(+), диез(#) и пробел

( ). Они могут появляться в произвольном порядке и комбинации.

-----------------------------------------------------------------

ФлагЧто определяет

-----------------------------------------------------------------

- Выравнивание результата по левому краю и за-

полнение правого края пробелами.Если не задан,

то осуществляется выравнивание справа, и левый

край заполняется пробелами или нулями.

+ Знаковые результаты преобразования всегда на-

чинаются со знаков плюс(+) или минус(-).

пробел Если величина неотрицательна, то вывод начина-

ется с пробела вместо знака плюс; отрицатель-

ные величины начинаются со знака минус.

# Определяет, что аргумент преобразуется с испо-

льзованием "альтернативной формы". См. следую-

щую таблицу.

-----------------------------------------------------------------

Замечание: плюс считается старше пробела при одновременном их ис-

пользовании.

Дополнительные формы

Если вместе с символом преобразования используется флаг #,

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

-----------------------------------------------------------------

Символ Как # влияет на arg преобразования

-----------------------------------------------------------------

c,s,d,i,u Не влияет.

0 Ненулевой аргумент arg будет начинаться с

нуля.

x или X arg будет начинаться с 0x (или 0X).

e, E или f Результат всегда будет содержать десятич-

ную точку, даже если за ней не следуют

цифры. Обычно десятичная точка появляется

только в случае, когда после нее следуют

цифры.

g или G Аналогично e и E, но конечные нули не добавляются.

-----------------------------------------------------------------

Спецификаторы ширины

Спецификатор ширины устанавливает минимальную ширину поля

для выводимой величины.

Ширина определяется одним из двух способов: непосредственно

с помощью строки десятичных цифр, или косвенно - с помощью звез-

дочки(*). Если вы используете звездочку в качестве спецификатора

ширины, то следующий аргумент вызова (который должен быть целым)

определяет минимальную ширину выводимого поля.

Отсутствие поля для вывода значения или его недостаточная

ширина вызывают усечение выводимого значения. Если результат

преобразования больше, чем позволяет ширина поля, то поле просто

расширяется до размеров результата.

-----------------------------------------------------------------

Спецификатор Как влияет на ширину вывода ширины

-----------------------------------------------------------------

n Печатается по крайней мере n знаков. Если

величина вывода меньше, чем n знаков, то

вывод дополняется пробелами (справа - в

случае задания флага "-",и слева - в про-

тивном случае).

0n Печатается по крайней мере n знаков. Если

в выводимой величине меньше,чем n знаков,

то она дополняется нулями слева.

* Список аргументов используется для полу-

чения спецификатора ширины,который должен

предшествовать действительному форматируемому аргументу.

-----------------------------------------------------------------

Спецификаторы точности

Спецификаторы точности всегда начинаются с точки(.), отделя-

ющей его от предшествующего спецификатора ширины. Точность, по-

добно ширине, определяется либо непосредственно с помощью

строки десятичных цифр, либо косвенно с помощью звездочки(*). Ес-

ли вы используете звездочку в качестве спецификатора ширины, то

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

точность.

Если вы используете звездочки для задания ширины или точнос-

ти (или того и другого), то непосредственно за аргументом ширины

должен следовать аргумент точности, а затем - преобразуемая вели-

чина.

-----------------------------------------------------------------

Спецификатор Как влияет на точность вывода точности

-----------------------------------------------------------------

(не задан) Точность устанавливается по умолчанию:

по умолчанию = 1 для d,i,o,u,x,X типов;

по умолчанию = 6 для e,E,f типов;

по умолчанию = всем значащим цифрам для

g и G типов;

по умолчанию = печать до первого 0-знака

для типов s;

не влияет на тип с

.0 Для типов d,i,o,u,x точность устанавлива-

ется по умолчанию.

Для типов e,E,f не печатается десятичная

точка.

.n Печатается n символов или n десятичных

мест. Если величина вывода имеет больше,

чем n знаков, то вывод может быть усечен

или округлен (произойдет это или нет, за-

висит от символа типа).

* Список аргументов используется для полу-

чения спецификатора точности, который до-

лжен предшествовать действительному форматируемому аргументу.

-----------------------------------------------------------------

Примечание: если точность явно определена как нулевая, и формат

определения поля соответствует одному из целочисленных форматов

(т.е. d,i,o,u,x), и выводимым значением является 0, то ни одной

цифры не будет выведено в этом поле (т.е. поле будет представ-

лено пробелом)

-----------------------------------------------------------------

Символ Как спецификатор точности влияет напреобразования преобразования

-----------------------------------------------------------------

d .n определяет, что будет напечатано по

i крайней мере n цифр.Если входной аргумент

o имеет меньше, чем n цифр, то выходная ве-

u личина дополняется нулями слева.

x Если входной аргумент имеет больше, чем n

X цифр, то выходная величина не усекается.

e .n определяет, что после десятичной точки

E будет напечатано n знаков,а последние пе-

f чатаемые цифры округляются.

g .n определяет, что будет напечатано самое

G большее n значащих цифр.

c .n не влияет на вывод

s .n определяет, что будет напечатано не более, чем n знаков.

-----------------------------------------------------------------

Модификатор размера вводимого значения

Символ модификации размера вводимого значения (F,N,h,l или

L) задает размер последующего входного аргумента:

F = указатель типа far

N = указатель типа near

h = короткое целое (short int)

l = длинное целое (long)

L = длинное целое двойной точности (long double)

Модификаторы размера (F, N, h, l, и L) влияют на то, как

функции ...printf интерпретируют тип данных соответствующего

входного аргумента arg. F и N используются только для входных ар-

гументов, являющихся указателями (%p, %s и %n). h и l и L исполь-

зуются для входных аргументов, являющихся числами (целыми или с

плавающей точкой).

Как F, так и N переопределяют входной аргумент arg. Обычно

аргументы для преобразований типа %p, %s или %n являются указате-

лями принятого по умолчанию размера для заданной модели памяти. F

обозначает: "Интерпретировать аргумент как указатель типа far". N

обозначает: "Интерпретировать аргумент как указатель типа near".

Модификаторы h и l и L переопределяют принятый по умолчанию

размер входных данных для числовых аргументов: l и L применяется

для целых типов (d, i, o, u, x, X) и типов с плавающей точкой (e,

E, f,g, G); h используется только для целых типов. Ни h, ни l не

влияют на символьные типы (с, s) и на указатели (p, n).

-----------------------------------------------------------------

Модификатор

входного Как интерпретируется аргумент arg размера

-----------------------------------------------------------------

F Аргумент считывается как указатель типа far.

N Аргумент считывается как указатель типа near.

N не может быть использован ни при каких пре-

образованиях в "огромной" (huge) модели.

h Аргумент интерпретируется как короткое целое

(short int) для d, i, o, u, x, X.

l Аргумент интерпретируется как длинное целое

(long) для d, i, o, u, x, X;

аргумент интерпретируется как удвоенный

(double) для e, E, f, g, G.

L аргумент интерпретируется как длинное целое

двойной точности(long double) для е,E,f,g или

G

-----------------------------------------------------------------

printf

-----------------------------------------------------------------

ВозвращаемоеФункция printf возвращает число выведенных байт

значениеВ случае ошибки printf возвращаeт EOF.

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

ANSI Cи. Определяется в книге Кернигана и Рит-

чи.

См. также cprintf, ecvt, fprintf, fread, fscanf, putc,

puts, putw, scanf, sprintf, vprintf, vsprintf

Пример #define I 555

#define R 5.5

main()

{

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

{

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

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

strcat(tp,"8x |);

printf(tp.I);

strcpy(tp,"");

strcpy(tp,prefix);

strcat(tp,"10.2e |");

printf(tp,R);

strcpy(tp,prefix);

strcat(tp,"10.2f |");

print(tp,R);

printf(" \n");

strcpy(prefix,"%");

}

}

}

Результат выполнения программы

prefix 6d 6o 8x 10.2e 10.2f

%-+#0 |+555 |01053 |0x22b |+5.50e+00 |+5.50 |

%-+# |+555 |01053 |0x22b |+5.50e+00 |+5.50 |

%-+0 |+555 |1053 |22b |+5.50e+00 |+5.50 |

%-+ |+555 |1053 |22b |+5.50e+00 |+5.50 |

%-#0 |555 |01053 |0x22b |5.50e+00 |5.50 |

%-# |555 |01053 |0x22b |5.50e+00 |5.50 |

%-0 |555 |1053 |22b |5.50e+00 |5.50 |

%- |555 |1053 |22b |5.50e+00 |5.50 |

%+#0 |+00555 |001053 |0x00022b |+05.50e+00 |+000005.50 |

%+# | +555 | 01053 | 0x22b | +5.50e+00 | +5.50 |

%+0 |+00555 |001053 |0000022b |+05.50e+00 |+000005.50 |

%+ | +555 | 1053 | 22b | +5.50e+00 | +5.50 |

%#0 |000555 |001053 |0x00022b |005.50e+00 |0000005.50 |

%# | 555 | 01053 | 0x22b | 5.50e+00 | 5.50 |

%0 |000555 |001053 |0000022b |005.50e+00 |0000005.50 |

% | 555 | 1053 | 22b | 5.50e+00 | 5.50 |

-----------------------------------------------------------------

putc

-----------------------------------------------------------------

НазначениеВыводит символ в поток.

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

int putc (int c, FILE *stream);

Прототип вstdio.h

Замечанияputc является макросом, который выводит символ

c в поток, определяемый stream.

ВозвращаемоеПри успешном завершении putc возвращает

ззначение выведенный символ, т.е. с. При ошибке putc

возвращает EOF

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

ANSI C. Определяется в книге Кернигана и Ритчи

См. также fprintf,fputc,fputch,getc,getchar,printf,

putch,putchar

-----------------------------------------------------------------

putch

-----------------------------------------------------------------

НазначениеВыводит на экран один символ

Синтаксис int putch(int c);

Прототип вconio.h

Замечанияputch выводит символ с в текущее текстовое

окно. Эта функция осуществляет непосредственный

вывод на консоль в алфавитно-цифровом режиме.

putch не преобразует символы перехода к новой

строке и перехода к началу новой строки.

ВозвращаемоеПри успешном завершении putch возвращает

значениевыведенный символ, т.е. с. При ошибке

возвращает EOF

Переносимостьputch работает только на IBM PC и совместимых

компьютерах

См. также cprint,cputs,getch,getche,putc,putchar

-----------------------------------------------------------------