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

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

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

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

c,printf,format-specifiers,

35

Ответов: 5


46 принят

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

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

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

Так,

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

такой же как

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

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


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


1

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

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

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


0

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

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

0

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

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

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

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

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

C, PRINTF, формат спецификаторы,