Задать переменную ширину текстового столбца в printf

чтобы определить размер столбца на языке C, мы используем %<number>d. Например, я могу ввести %3d и это даст мне столбец width=3. Моя проблема в том, что мой номер после % - это переменная, которую я получаю, поэтому мне нужно что-то вроде %xd (где x является целочисленной переменной, которую я получил когда-то раньше в моей программе). Но это не работает.

есть ли другой способ сделать это?

2 ответов


Вы можете сделать это следующим образом:

printf("%*d", width, value);

из комментария ли:
Вы также можете использовать * для размера точности:

printf("%*.*f", width, precision, value);

просто для полноты, хотел упомянуть, что с POSIX-совместимыми версиями printf() вы также можете поместить фактическое значение ширины поля (или точности) где-то еще в списке параметров и ссылаться на него, используя номер параметра 1, за которым следует знак доллара:

ширина поля или точность, или и то и другое, могут быть обозначены звездочкой " ∗ "или звездочкой, за которой следует одна или несколько десятичных цифр и" $ " вместо цифровой строки. В этом случае аргумент int предоставляет ширину или точность поля. Отрицательная ширина поля рассматривается как левый флаг регулировки, за которым следует положительная ширина поля; отрицательная точность рассматривается как отсутствующая. Если директива одного формата смешивает позиционные (nn$) и непозиционные аргументы, результаты не определены.

Е. Г., printf ( "%1$*d", width, value );