Подтвердить что ты не робот

Установить ширину столбца переменной текста в printf

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Например, printf ( "%1$*d", width, value );