Вывод в поля заданной ширины на языке C. Выравнивание

Обновлено: 27.09.2025

При выводе чисел и строк с помощью функции printf() можно указать количество знакомест для вывода. Например код

#include <stdio.h>

int main () {
    printf("%4d\n", 5);
    printf("%4d\n", 500);
}

выведет числа так:

   5
 500

Если бы в формате вывода не было чисел 4, то вывод выглядел бы так:

5
500

Когда указывается ширина поля, то по умолчанию данные выравниваются по правому краю. Это удобно, т. к. в этом случае при выводе целых чисел единицы оказываются под единицами, десятки под десятками и т. д. Если все же необходимо произвести выравнивание по левому краю, то это достигается с помощью знака минуса перед числом-количеством знакомест. Пример:

printf("%-10sworld!\n", "Hello");
printf("%-10sworld!\n", "Hi");
Hello     world!
Hi        world!

В языке программирования C существует несколько форматов вывода вещественных чисел (более подробно описано в уроке "Типы данных и их вывод"). Наиболее распространенный - %f. По умолчанию он выводит шесть знаков после запятой. Однако можно указать желаемое количество знакомест (через точку перед буквой f), а также ширину поля (до точки) и, если необходимо, выравнивание (знак минуса):

printf("%f\n", 0.145);
printf("%.3f\n", 0.1566123);
printf("%10.3f\n", 0.67123);
printf("%-10.2f\n", 0.2391);
0.145000
0.157
     0.671
0.24

Обратите внимание, что усечение дробной части выполняется согласно правилам округления.