Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
B1.2. Форматный вывод
Функции printf осуществляют вывод информации по формату. int fprintf(FILE *stream, const char *format,...); fprintf преобразует и пишет вывод в поток stream под управлением format. Возвращаемое значение - число записанных символов или, в случае ошибки, отрицательное значение. Форматная строка содержит два вида объектов: обычные символы, копируемые в выводной поток, и спецификации преобразования, которые вызывают преобразование и печать остальных аргументов в том порядке, как они перечислены. Каждая спецификация преобразования начинается с % и заканчивается символом-спецификатором преобразования. Между % и символом- спецификатором в порядке, в котором они здесь перечислены, могут быть расположены следующие элементы информации: • Флаги (в любом порядке), модифицирующие спецификацию:
• Число, специфицирующее минимальную ширину поля. Преобразованный аргумент будет напечатан в поле, размер которого не меньше указанной ширины, а если потребуется, в поле большего размера. Если число символов преобразованного аргумента меньше ширины поля, то поле будет дополнено слева (или справа, если число прижимается к левому краю). Обычно поле дополняется пробелами (или нулями, если присутствует флаг дополнения нулями). • Точка, отделяющая указатель ширины поля от указателя точности. • Число, задающее точность, которое специфицирует максимальное количество символов, печатаемых из строки, или количество цифр после десятичной точки в преобразованиях 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 описание < stdarg.h>). Таблица B-1. Преобразования printf
|