Мой man 3 printf
говорит:
Опциональный Строка из десятичных цифр, задающая минимальную ширину поля. Если , преобразованное значение имеет меньшее количество символов, чем ширина поля, оно будет , заполненное пробелами слева (или справа, если флаг левой регулировки имеет значение ), чтобы заполнить ширину поля.
и
'-»Ширина поля флаг отрицательного; преобразованное значение должно быть слева, скорректированное на границе поля. За исключением n-конверсии, преобразованное значение заполняется справа с помощью пробелов , а не слева с пробелами или нулями. A - переопределяет 0, если оба даны.
и
Ширина поля или точность, или оба, могут быть обозначены звездочкой «*» или звездочкой за которым следует один или более десятичных цифр и «$» вместо разрядная строка. В этом случае аргумент int предоставляет ширину или точность поля.
Так что я пробовал:
#include <stdio.h>
#include <string.h>
int main() {
int num = 123;
char* text = "The number is: ";
printf("%s%-*iX\n", text, 50 - (int) strlen(text), num);
}
Это получает:
The number is: 123 X
(. Там, где X это просто маркер, чтобы показать места для заполнения)
Вы читали ' мужчина 3 printf' (на Unix)? Поместите «printf» в поисковую систему по вашему выбору? – Robert
Да, я искал и не повезло. Проблема в том, что я хочу фиксированную общую длину, а не частично фиксированную. Например, форматирование% 10i может только фиксировать число, оно ничего не помогает в общей длине. –
Значит, вам не нужны 50 конечных пробелов, но вы хотите, чтобы весь вывод был 50 символов? – Robert