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