"%.*s"是什么意思作为printf中的格式说明符?

Mal*_*ist 3 c

谁能告诉我这意味着什么: "%.*s"

例如,它在这里使用:

  sprintf(outv->deliveryAddressCity, 
          "%.*s",
          sizeof(outv->deliveryAddressCity)-1,
          mi->deliveryAddressCity);
Run Code Online (Sandbox Code Playgroud)

hmj*_*mjd 7

%.*s表示从以下缓冲区打印前X个字符.在这种情况下,打印第一个sizeof(outv->deliveryAddressCity) - 1字符mi->deliveryAddressCity,防止写入超出范围outv->deliveryAddressCity.

一个较短的例子:

printf("%.*s", 4, "hello world");
Run Code Online (Sandbox Code Playgroud)

会打印hell.