Как передать параметр n в printf ("% nd", some_int); - PullRequest
10 голосов
/ 31 июля 2011

Мы все знаем на языках C, printf ("% 11d", some_int); означает выравнивание по правому краю в поле из 11 символов, но что если я захочу заменить здесь эту константу 11 надинамическая переменная, что я буду делать?

Ответы [ 4 ]

18 голосов
/ 31 июля 2011

Вы можете использовать символ *, чтобы указать ширину поля в своем собственном аргументе:

printf("%*d", some_width, some_int);
6 голосов
/ 31 июля 2011

Вы собираетесь прочитать справочную страницу printf(3) и встретить следующее:

Вместо строки десятичных цифр можно написать "*" или "* m $" (для некоторыхдесятичное целое число m) для указания того, что ширина поля задается в следующем аргументе или в m-м аргументе соответственно, который должен иметь тип int.

2 голосов
/ 31 июля 2011

используйте команду linux: "man 3 printf", чтобы получить больше информации.Один из способов сделать это -

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

, где width - это точность, а num - аргумент для печати.Другим способом, эквивалентным указанному выше, является

 printf("%2$*1$d", width, num);

В более общем смысле это записывается как "* m $ d", где m - это int, а номер аргумента.

0 голосов
/ 31 июля 2011

Один из способов сделать это - использовать snprintf-эквивалент в буфере массива символов, чтобы создать строку формата printf.(Обязательно проверьте переполнение буфера, конечно.)

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