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

Translate

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

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

fprintf(outFile, "\n%*s", indent, "");
This question and all comments follow the "Attribution Required."

Все ответы

Translate

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

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

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

Так,

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

такой же как

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

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

Источник
Translate

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

Источник
Translate

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

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

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

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

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

Источник
Translate

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

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
Источник
Translate

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

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

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

Источник
Leave a Reply
You must be logged in to post a answer.
Об авторе