Мы все знаем на языках C, printf ( "% 11d", some_int); означает выравнивание по правому краю в пределах 11 символов, но что, если я хочу заменить эту константу 11 здесь динамическая переменная, что я буду делать?
Как передать параметр n в printf ( "% nd", some_int);
Ответ 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. (Конечно, обязательно проверьте переполнение буфера.)