В некотором коде, который я должен поддерживать, я видел спецификатор формата %*s
. Может ли кто-нибудь сказать мне, что это такое и почему он используется?
Пример его использования похож:
fprintf(outFile, "\n%*s", indent, "");
В некотором коде, который я должен поддерживать, я видел спецификатор формата %*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 ™ Как программировать (ранние объекты), десятое издание