Как передать параметр n в printf ( "% nd", some_int);

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

Ответ 1

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

printf("%*d", some_width, some_int);

Ответ 2

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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