Что означает "%. * S" в printf?

У меня есть фрагмент кода, в котором есть

printf("%.*s\n")

что означает %.*s?

Ответ 1

Вы можете использовать звездочку (*), чтобы передать спецификатор/точность ширины printf(), а не жестко кодировать ее в строка формата, т.е.

void f(const char *str, int str_len)
{
  printf("%.*s\n", str_len, str);
}

Ответ 2

Я не думаю, что приведенный выше код верен, но (согласно этому описанию printf()) .* означает

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

Итак, это строка с допустимой шириной в качестве аргумента.

Ответ 3

Смотрите: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

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

s Строка символов