2009-06-16 6 views
33

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

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

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

ответ

43

It's used to specify, in a dynamic way, what the width of the field is:

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

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

Так,

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

такая же, как

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

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

+0

Спасибо за разъяснение. Я немного искал Google, но не смог найти ответ. – Aamir

+0

Я не могу заставить это работать с sscanf –

+3

@ EthanHeilman * означает что-то ПОЛНОСТЬЮ различное в семействе функций scanf. –

0

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

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

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

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

e.g: printf("%*s", 4, myValue); является равнозначным printf("%4s", myValue);.

7

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

+10

Используйте «%. * S», чтобы достичь этого! –

0

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

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

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

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

Литература: Java™ How To Program (Early Objects), Tenth Edition

 Смежные вопросы

  • Нет связанных вопросов^_^