Наиболее универсальной стандартной функцией, обеспечивающей запись в выходной поток stdout, является функция printf. Она производит вывод на экран монитора строк, отдельных символов и чисел в различных форматах.
Приведем прототип функции printf:
int printf( char *format [,argument]... );
Первый аргумент функции содержит указатель на управляющую строку, которая может состоять из:
символов непосредственно отображаемых на экране,
управляющих символов,
спецификаторов формата.
Непосредственно выводимые символы и управляющие символы помещаются в выходной поток без изменения.
Если управляющая строка содержит спецификаторы формата, то каждому спецификатору должен соответствовать один аргумент, следующий за управляющей строкой. Аргументы представляют собой переменные или константы, которые преобразуются согласно соответствующих им спецификаторов формата и затем также помещаются в выходной поток.
Различные спецификаторы формата перечислены в следующей таблице:
Спецификатор формата | Тип данных |
| |
%d, %i | Целое десятичное число | ||
%s | Текстовая строка | ||
%c | Один символ | ||
%e, %E | Число с плавающей точкой в экспоненциальной форме | ||
%f | Число с плавающей точкой в десятичной записи | ||
%u | Целое десятичное число без знака | ||
%o | Целое восьмеричное число без знака | ||
%x, %X | Целое шестнадцатиричное число без знака | ||
%g, %G | Либо %e, либо %f в зависимости от того, в каком формате запись короче | ||
%p | Значение указателя | ||
%n | Количество символов |
В более общем случае, в спецификаторе формата между символом '%' и символом, определяющим тип преобразования можно разместить флаги и префиксы типов:
% [флаг] [ширина] [.точность] [префикс типа] символ преобразования
Флаги приведены в таблице 13.3, а префиксы типов в таблице 13.4.
Параметр [ширина] задает минимальную ширину поля, используемую при печати строки или числа. Если это число или строка не помещаются в поле целиком, то ширина поля увеличивается.
Флаг |
Значение |
- |
Выравнивание по левой границе |
+ |
Перед числом помещается его знак |
пробел (' ') |
Перед данными помещается пробел |
Префикс типа |
Значение |
F |
Дальний указатель |
N |
Ближний указатель |
h |
Короткое целое |
l, L |
Длинное целое |