Установить переменную ширину столбца текста в printf - PullRequest
51 голосов
/ 18 августа 2011

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

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

Ответы [ 2 ]

87 голосов
/ 18 августа 2011

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

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

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

printf("%*.*f", width, precision, value);
7 голосов
/ 28 августа 2013

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...