Функция printf()функция форматированного вывода языка Си, осуществляющая вывод в стандартный поток stdout в соответствии с форматом.
int printf(формат[,аргументы]...)
Функция printf() возвращает количество выведенных символов или, в случае ошибки, отрицательное число.
Формат — это строка, заключенная в двойные кавычки, которая может содержать литеральные символы, копируемые в поток вывода, и спецификации преобразования.
Спецификация преобразования — последовательность символов, начинающаяся с символа % и заканчивающаяся символом-спецификатором.
Объявление прототипа функции printf() находится в файле заголовков stdio.h, поэтому программы, использующие эту функцию, должны включать следующую директиву препроцессора:
#include <stdio.h>
Спецификаторы преобразования должны соответствовать типу указанных аргументов. При несовпадении не будет выдано сообщений об ошибках ни при компиляции, ни при выполнении программы, но при этом вывод программы может содержать "мусор".
Таблица 1    
Символ-спецификаторТип аргумента; вид печати
cint; единичный символ после преобразования в unsigned char
d, iint; знаковое целое число в десятичной записи
oint; знаковое целое число в восьмеричной записи
x, Xint; знаковое целое число в шестнадцатеричной (a-f или A-F) записи
uint; беззнаковое целое число в десятичной записи
e, Edouble; десятичная форма записи вида [-]m.ddddddexx или [-]m.ddddddExx, где количество d определяется точностью. По умолчанию точность равна 6, нулевая точность подавляет печать десятичной точки
fdouble; десятичная форма записи вида [-]mmm.ddd, где количество d определяется точностью. По умолчанию точность равна 6, нулевая точность подавляет печать десятичной точки
g, Gdouble; используется %e или %E, если порядок меньше -4 или больше или равен точности, в противном случае используется %f. Завершающие нули и десятичная точка не печатаются
schar; печатает символы, расположенные до признака конца строки, или в количестве, заданном точностью
pvoid *;указатель
nint *; число символов, напечатанных к данному моменту данным вызовом функции, записывается в аргумент (никакие другие аргументы не преобразуются)
%Аргумент не преобразуется; печатается символ %

Пример 1
#include <stdio.h>
int main()
{
   char c = 'j';
   int val = 59;
   float total = 7500.5;
   long double var = 63.78;
   char initials[4];
   initials[0] = 'I';
   initials[1] = 'M';
   initials[2] = 'R';
   initials[3] = '\0';
   printf("%c\n", c);
   printf("%d\n", val);
   printf("%o\n", val);
   printf("%x\n", val);
   printf("%e\n", total);
   printf("%e\n", total);
   printf("%Lf\n", var);
   printf("%s\n", initials);
}
вывод:
j
59
73
3b
7.500500e+03
7500.500000
63.780000
IMR
Дополнительное форматирование
Функция printf() предоставляет множество возможностей по форматированию вывода.
В спецификации преобразования между символом % и символом-спецификатором могут быть расположены следующие элементы (в указанном порядке):
Пример 2
Пусть для вывода некоторого набора данных используется следующий вариант функции printf():
printf("%d %d %s %f\n", mod, gt, it, cst);
Вывод будет выглядеть следующим образом:
2901 6 Cerebral Calculator 75.489998
30 7229 Blue Ribbon Cable 26.000000
31650 100 Glow Worm Glare Screen 89.989998
2 677 Personal Mainframe 9000.000000
Пример 3
Пусть для вывода этого же набора данных используется вариант функции printf()с возможностями дополнительного форматирования:
printf("%-6d %4d %-24s %7.2f\n", mod, gt, it, cst);
В этом случае вывод будет выглядеть следующим образом:
2901     6 Cerebral Calculator        75.48
30    7229 Blue Ribbon Cable          26.00
31650  100 Glow Worm Glare Screen     89.98
2      677 Personal Mainframe       9000.00