Ответ 1
Вы можете сделать это следующим образом:
printf("%*d", width, value);
Из комментария Ли:
Вы также можете использовать * для размера точности:
printf("%*.*f", width, precision, value);
Чтобы определить размер столбца на языке C, мы используем %<number>d
.
Например, я могу набрать %3d
, и он даст мне столбец шириной = 3.
Моя проблема в том, что мой номер после %
- это переменная, которую я получаю, поэтому мне нужно что-то вроде %xd
(где x
- целочисленная переменная, которую я получил когда-то раньше в моей программе).
Но он не работает.
Есть ли другой способ сделать это?
Вы можете сделать это следующим образом:
printf("%*d", width, value);
Из комментария Ли:
Вы также можете использовать * для размера точности:
printf("%*.*f", width, precision, value);
Просто для полноты, хотелось бы упомянуть, что с версиями printf()
вы также можете поместить фактическую ширину поля (или точность ) значение где-то еще в списке параметров и ссылаться на него с использованием номера параметра на основе 1, за которым следует знак доллара:
Ширина поля или точность, или и то, и другое могут указываться звездочкой * или звездочкой, за которой следует одна или несколько десятичных цифр, а вместо цифры - $. В этом случае аргумент int предоставляет ширину или точность поля. Отрицательная ширина поля рассматривается как левый флажок регулировки, за которым следует положительная ширина поля; отрицательная точность трактуется так, как будто она отсутствует. Если директива одного формата смешивает позиционные (nn $) и непозиционные аргументы, результаты undefined.
Например, printf ( "%1$*d", width, value );