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

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

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

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

5 ответов


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

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

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

и

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

это же as

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

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


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


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 для размещения соответствующего количества символов.

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

ссылки: На Java Как Программировать (Ранние Объекты), Десятое Издание