Пространство переменной длины с использованием printf - PullRequest
9 голосов
/ 09 июля 2010

Я пытаюсь отформатировать некоторые операторы printf, чтобы учесть произвольные уровни отступа.В идеале я хочу следующий вывод, где «Один», «Два» и т. Д. Являются заполнителями для сообщений журнала переменной длины.

One
 Two
  Three
 Two
One

Я работаю над интервалом переменной длины, необходимым для отступа, и я знаю,Я могу сделать следующее:

printf( "%*s", indent_level, "" );

но мне интересно, есть ли способ сделать это без второй пустой строки arg.

Ответы [ 2 ]

16 голосов
/ 09 июля 2010

Вы можете просто передать в качестве параметра то, что хотите распечатать:

printf( "%*s", indent_level + strlen(mystr), mystr );
2 голосов
/ 15 августа 2012

По какой-то причине не могу написать комментарий, поэтому публикуем отдельный некро-ответ.

>> "Конечно, если первый параметр также имеет переменную длину, то это не сработает для вас "

> Да, это так; это должно быть в состоянии обрабатывать числовые значение в качестве первого параметра.

Вы можете использовать пустую строку

printf ("%*s%d", indent_level, "", decimal);

для отступа десятичной дроби переменной длины. Немного неуклюже, но работает.

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