Что значит %*формат 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 Как Программировать (Ранние Объекты), Десятое Издание