Подтвердить что ты не робот

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

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

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

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

Ответ 1

Он использовал динамическое определение ширины поля:

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

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

Итак,

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

совпадает с

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

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