printf("%5s\n", "#");
дает:
#
Есть ли способ установить ширину поля этой строки с помощью спецификатора целочисленного формата?
Что-то вроде этого,
printf("%%ds\n", 5, "#");
Из руководства printf
Вместо десятичной строки di git можно написать «*» или «* m $» (для некоторого целого десятичного числа m) чтобы указать, что ширина поля задается в следующем аргументе или в m-м аргументе, соответственно, который должен иметь тип int.
Итак, в вашем примере это будет:
printf("%*s\n", 5, "#");