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