Задать переменную ширину текстового столбца в 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 );