Главная
страница 1 ... страница 16страница 17страница 18страница 19страница 20 ... страница 23страница 24

B1.2. Форматный вывод

Функции printf осуществляют вывод информации по формату.

int fprintf(FILE *stream, const char *format, ...);

fprintf преобразует и пишет вывод в поток stream под управлением format. Возвращаемое значение - число записанных символов или, в случае ошибки, отрицательное значение.

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

 Флаги (в любом порядке), модифицирующие спецификацию:



-

- указывает на то, что преобразованный аргумент должен быть прижат к левому краю поля;

+

- предписывает печатать число всегда со знаком;

пробел

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

0

- указывает, что числа должны дополняться слева нулями до всей ширины поля;

#

- указывает на одну из следующих форм вывода: для o первой цифрой должен быть 0; для x или X ненулевому результату должны предшествовать 0x или 0X; для e, E, f, g и G вывод должен обязательно содержать десятичную точку; для g и G завершающие нули не отбрасываются.

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

 Точка, отделяющая указатель ширины поля от указателя точности.

 Число, задающее точность, которое специфицирует максимальное количество символов, печатаемых из строки, или количество цифр после десятичной точки в преобразованиях e, E или f, или количество значащих цифр для g или G - преобразования, или минимальное количество цифр при печати целого (до необходимой ширины поля число дополняется слева нулями).

 Модификаторы h, l (буква ell) или L. "h" указывает на то, что соответствующий аргумент должен печататься как short или unsigned short; "l" сообщает, что аргумент имеет тип long или unsigned long; "L" информирует, что аргумент принадлежит типу long double.

Ширина, или точность, или обе эти характеристики могут быть специфицированы с помощью *; в этом случае необходимое число "извлекается" из следующего аргумента, который должен иметь тип int (в случае двух звездочек используются два аргумента).

Символы-спецификаторы и разъяснение их смысла приведены в таблице B-1. Если за % нет правильного символа-спецификатора, результат не определен.

int printf(const char *format, ...);



printf(...) полностью эквивалентна fprintf(stdout, ...).

int sprintf(char *s, const char *format, ...)



sprintf действует так же, как и printf, только вывод осуществляет в строку s, завершая ее символом '\0'. Строка s должна быть достаточно большой, чтобы вмещать результат вывода. Возвращает количество записанных символов, в число которых символ '\0' не входит.

int vprintf (const char *format, va_list arg)

int vfprintf (FILE *stream, const char *format, va_list arg)

int vsprintf (char *s, const char *format, va_list arg)

Функции vprintf, vfprintf и vsprintf эквивалентны соответствующим printf- функциям с той лишь разницей, что переменный список аргументов представлен параметром arg, инициализированным макросом va_start и, возможно, вызовами va_arg (см. в B7 описание ).

Таблица B-1. Преобразования printf



Символ

Тип аргумента; вид печати

d, i

int; знаковая десятичная запись

o

unsigned int; беззнаковая восьмеричная запись (без 0 слева)

x, X

unsigned int; беззнаковая шестнадцатеричная запись (без 0x или 0X слева), в качестве цифр от 10 до 15 используются abcdef для x и ABCDEF для X

u

unsigned int; беззнаковое десятичное целое

c

int; единичный символ после преобразования в unsigned char

s

char *; символы строки печатаются, пока не встретится '\0' или не исчерпается количество символов, указанное точностью

f

double; десятичная запись вида [-]mmm.ddd, где количество d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки

e, E

double; десятичная запись вида [-]m.dddddde±xx или запись вида [-]m.ddddddE±xx, где количество d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки

g, G

double; используется %e и %E, если порядок меньше -4 или больше или равен точности; в противном случае используется %f. Завершающие нули и точка в конце не печатаются

p

void *; печатает в виде указателя (представление зависит от реализации

n

int *; число символов, напечатанных к данному моменту данным вызовом printf, записывается в аргумент. Никакие другие аргументы не преобразуются

%

никакие аргументы не преобразуются; печатается %




<< предыдущая страница   следующая страница >>
Смотрите также:
Б. Керниган, Д. Ритчи Язык программирования Си Издание 3-е, исправленное Перевод с английского под редакцией Вс. С. Штаркмана Невский Диалект, Санкт-Петербург 2001
3942.83kb.
24 стр.
Шарп Перевод на русский язык под общей редакцией В. Зеленского Санкт-Петербург Б. С. К
2473.89kb.
10 стр.
Как запад стал богатым
5224.01kb.
30 стр.
Сведения о квалификации педагогических кадров
1227.17kb.
5 стр.
Тактика штурмовой авиации
1780.85kb.
12 стр.
Правила написания и оформления дипломных работ издание 3-е, исправленное и дополненное
840.67kb.
6 стр.
Николе М., Шварц Р. Н 63 Семейная терапия. Концепции и методы/Пер, с англ. О. Очкур, А. Шишко
3577.21kb.
23 стр.
Издание 3-е, исправленное Научный редактор издания профессор В. В. Целищев сибирское университетское издательство новосибирского университета новосибирск 2001
12957.91kb.
60 стр.
Сильвия Крэнстон при участии Кэри Уильямс Жизнь и творчество основательницы современного теософского движения Блаватской е. П. Перевод с английского под редакцией
8089.17kb.
47 стр.
Проблемы здоровья и экологии
3773.97kb.
37 стр.
Санкт-Петербург Москва • Харьков • Минск 2001
144.58kb.
1 стр.
Поэтический художественный перевод с английского языка на русский язык: Томас Харди. Thomas Hardy. His Immortality
7.24kb.
1 стр.