Ответ 1
Вы можете использовать звездочку (*
), чтобы передать спецификатор/точность ширины printf()
, а не жестко кодировать ее в строка формата, т.е.
void f(const char *str, int str_len)
{
printf("%.*s\n", str_len, str);
}
У меня есть фрагмент кода, в котором есть
printf("%.*s\n")
что означает %.*s
?
Вы можете использовать звездочку (*
), чтобы передать спецификатор/точность ширины printf()
, а не жестко кодировать ее в строка формата, т.е.
void f(const char *str, int str_len)
{
printf("%.*s\n", str_len, str);
}
Я не думаю, что приведенный выше код верен, но (согласно этому описанию printf()
) .*
означает
Ширина не указана в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен быть отформатирован. '
Итак, это строка с допустимой шириной в качестве аргумента.
Смотрите: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
.*
Точность не указана в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен быть отформатирован.
s
Строка символов