Рядок формату, що використовується в багатьох функціях виведення даних (printf, cprintf, sprintf та ін), складається із звичайних символів, керуючих послідовностей символів та специфікацій полів формату виведення аргументів. Звичайні символи та послідовності, що управляють, просто копіюються у вихідний рядок.
Специфікації полів формату починаються з символу % і мають вигляд:
%[flags] [width] [.precision] [F|KIh|l|L]type
Усі символи специфікації записуються без пробілів між ними.
Єдиним обов’язковим елементом специфікації є type – символ, що вказує на тип даних поля, що вводиться. Інші необов’язкові елементи задають параметри форматування:
| Значення | Опис | |
| [flags] | Прапори вирівнювання, управління печаткою знака числа, управління пробілами, десятковою точкою, основою друку (вісімкова, шістнадцяткова) | |
| [width] | Ширина поля – мінімальна кількість символів, що виводяться. | |
| [.precision] | Специфікатор точності – максимальна кількість символів, що друкуються, або мінімальна кількість розрядів цілого, що друкується. | |
| [F|N|h|l|L] | Модифікатори, які змінюють розмір аргументу за замовчанням: | |
| N – ближній вказівник (near) F – дальній вказівник (far) h – short int l – long L – long double |
Ниже приведены возможные значения type.
| Символ | Тип аргументу | Формат виведення |
| d | цілий | десятичне signed integer |
| i | цілий | десятичне signed integer |
| o | цілий | вісімкове unsigned integer |
| u | цілий | десятичне unsigned integer |
| x | цілий | шістнадцяткове unsignedint (з цифрами a, b, с, d, е, f) |
| X | цілий | те ж, що х, але з цифрами А, В, С, D, Е, F |
| f | дійсний | формат з фіксованою точкою: [—]dddd.dddd |
| e | дійсний | експоненціальний (науковий) формат: [—]d.dddde[+/-]ddd |
| E | дійсний | те ж, що е, але з символом Е |
| g | дійсний | найбільш компактний з форматів е і f для даного числа і даної точності; незначні нулі не виводяться |
| G | дійсний | те ж, що g, але з символом Е в експоненціальному форматі |
| Символи | ||
| c | символ | один символ |
| s | вказівник на рядок | рядок символів до нульового символу в кінці або з числом символів, заданих точністю |
| % | немає | друк символу % |
| Вказівники | ||
| n | вказівник на int | у комірку пам’яті, яку вказує аргумент, заноситься кількість виведених на цей час символів |
| p | вказівник | друк аргументу як покажчика; залежно від моделі пам’яті, що використовується, друкується або XXXX:YYYY, або YYYY (тільки зміщення) |
| Наведені нижче прапори flags можуть записуватися в будь-якій послідовності та в будь-якій комбінації. | ||
| Флаг | Пояснення | |
| – | Вирівнювання вліво, поле, що залишилося справа заповнюється пробілами. Якщо цей прапор не заданий, то проводиться вирівнювання вправо, а поле, що залишилося, зліва заповнюється нулями або пробілами. | |
| + | Обов’язково перед числом вказується знак плюс (+) або мінус (-) | |
| пробіл | Якщо значення не є негативним, то друк починається з пробілу замість знака плюс (+). Для негативного значення знак мінус (-) друкується. Якщо поряд із цим прапором заданий прапор +, він повинен бути вказаний до прапора пробілу. | |
| # | У форматах о, x, X додається префікс O, Ox, OX відповідно. У форматах e, E, f, g, G завжди виводиться десяткова точка. Крім того, у форматах g, G не пригнічується виведення незначних нулів. |
Специфікатор width визначає мінімальну ширину поля. Специфікатор може бути заданий або явно десятковим числом, або опосередковано – символом зірочки (*). У разі передбачається, що ширину поля задає черговий аргумент зі списку.
Специфікатор width вказує лише мінімальну ширину. Якщо висновок даного аргументу вимагає більшої ширини поля, поле розширюється і значення ніколи не усікається.
Специфікатор може приймати такі значення:
| Значення | Опис |
| n | Виводиться принаймні n символів. Якщо для виведення потрібно менше символів, то зайві позиції (ліворуч або праворуч, залежно від прапорів) заповнюються пробілами. |
| On | Виводиться, принаймні n символів. Якщо виводу потрібно менше символів, то зайві позиції зліва заповнюються нулями. |
| * | Ширину поля задає черговий аргумент зі списку. |
Специфікатор точності precision визначає максимальну кількість символів, що виводяться, або місце десяткової точки. Він записується після символу точки (.), щоб відокремити його від попереднього специфікатора width. Даний специфікатор, як і wiclth, може бути заданий або явно – десятковим числом, або побічно – символом зірочки (*). У разі передбачається, що точність задається черговим аргументом зі списку.
Відсутність специфікатора precision означає точність за умовчанням та еквівалентно:
| Значення | Опис |
| 1 | для форматів d, i, о, u, x, X |
| 6 | для форматів e, E, f |
| числу значущих цифр | для форматів g, G |
| висновку до нульового символу | для формату s |
| не впливає | на формат с |
Можливі значення precision:
| .o | Для форматів d, i, о, u, x еквівалентно точності за умовчанням. Для форматів e, E, f означає висновок без десяткової точки |
| .n | Задає висновок n символів або позицію n десятичної точки. Якщо величина, що виводиться, містить більше n символів, то рядок символів усікається, а число може округлятися (залежно від формату) |
| * | Точність задає черговий аргумент зі списку. |
| Нижче наведено відомості про вплив значення precision на різні формати. | |
| d, i, о, u, x, X | Вказує, що має виводитися принаймні n цифр. Якщо число має менше n цифр, позиції зліва заповнюються нулями. Якщо число має більше n цифр, число не усікається. |
| e, E, f | Вказує, що після десяткової точки має виводитися n цифр. Остання цифра округляється. |
| g, G | Вказує, що повинно виводитися додаткові цифри. |
| c | Специфікатор не впливає. |
| N | Вказує, що має виводитися трохи більше n символів. |
Приклади впливу формату:
| %f | %e | %g | %#G |
| 110000,000000 | 1,100000e+05 | 110000 | 110000, |
| -110000000,000000 | -1,100000e+08 | -1,1e+08 | -1,10000E+08 |
| 0,000110 | 1,100000e-04 | 0,00011 | 0,000110000 |
| 0,000000 | 1,100000e-07 | 1,1e-07 | 1,10000Е-07 |
| 12,000000 | 1,200000e+01 | 12 | 12,0000 |
| 0,000000 | 0,000000e+00 | 0 | 0,00000 |
Приклади впливу флагів:
| Специфікація | Результат |
| %6i | 12 -12 |
| %-6i | 12 -12 |
| %+6i | + 12 -12 |
| %06i | 000012 -00012 |
Приклади впливу точності:
| %f | 123456789,000000 | 0,123457 |
| %.5f | 123456789,00000 | 0,12346 |
| %.4f | 123456789,0000 | 0,1235 |
| %.3f | 123456789,000 | 0,123 |
| %e | 1,234568e+08 | 1,234568e-01 |
| %. 5e | 1,23457e+08 | 1,23457e-01 |
| %.4e | 1,2346e+08 | 1,2346e-01 |
| %.3e | 1,235e+08 | 1,235e-01 |
| %g | 1,23457e+08 | 0,123457 |
| %.5g | 1,2346e+08 | 0,12346 |
| %.4g | 1,235e+08 | 0,1235 |
| %.3g | 1,23е+08 | 0,123 |
програмування