printf中的“%。* s”是什么意思?

我有一个代码片段,其中有一个

printf("%.*s\n") 

%.*s是什么意思?

您可以使用星号( * )将宽度说明符/精度传递给printf() ,而不是将其硬编码到格式string中,即

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

我不认为上面的代码是正确的,但(根据这个printf()描述) .*意思

格式string中没有指定宽度,而是作为要格式化的参数前面的附加整数值参数。

所以这是一个宽度可以通过的string作为参数。

请参阅: http : //www.cplusplus.com/reference/clibrary/cstdio/printf/

.*格式string中没有指定精度,而是作为要格式化的参数前面的附加整数值参数。

sstring