Что означает спецификатор формата% * s?

В некотором коде, который я должен поддерживать, я видел спецификатор формата %*s . Может ли кто-нибудь сказать мне, что это такое и почему он используется?

Примером его использования является:

 fprintf(outFile, "\n%*s", indent, ""); 

    Он используется для динамического определения того, что такое ширина поля :

    • Ширина не указывается в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен быть отформатирован.

    поэтому «indent» указывает, сколько места выделяется для строки, которая следует за ней в списке параметров.

    Так,

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

    такой же как

     printf("%5s", ""); 

    Это хороший способ разместить некоторые пробелы в вашем файле, избегая цикла.

    Не используйте «% * s» в буфере, который не завершен NULL (упакован), думая, что он напечатает только поле «длина».

    http://www.cplusplus.com/reference/clibrary/cstdio/printf/

    Ширина не указывается в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен быть отформатирован.

    например: printf("%*s", 4, myValue); эквивалентно printf("%4s", myValue); ,

    * Вызывает fprintf для вывода вывода до тех пор, пока он не станет шириной n символов, где n – целочисленное значение, хранящееся в аргументе функции, предшествующем представлению модифицированного типа.

     printf("%*d", 5, 10) //will result in "10" being printed with a width of 5. 

    Спецификатор формата% 4s выводит строку в ширину поля 4, то есть printf отображает значение с по меньшей мере 4 символами.

    Если значение, которое должно быть выведено, составляет less более 4 символов, то значение по умолчанию равно right justified значению в поле.

    Если значение greater чем 4 символа, ширина поля expands для размещения соответствующего количества символов.

    Чтобы оставить значение влево, используйте отрицательное целое число, чтобы указать ширину поля.

    Ссылки: Java ™ Как программировать (ранние объекты), десятое издание