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

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


printf("%.*s\n")

什么%.*s意思


元芳怎么了
浏览 1194回答 3
3回答

侃侃无极

这里更详细。整数值或*指定最小字段宽度。如果需要,结果用空格字符填充(默认情况下),在右对齐时在左侧填充,在左对齐时在右侧填充。在使用*的情况下,宽度由int类型的附加参数指定。如果参数的值为负,则结果将指定为-标志,且字段宽度为正。(注意:这是最小宽度:该值永远不会被截断。).后跟整数或*,或者都不指定转换的精度。在使用*的情况下,精度由int类型的附加参数指定。如果此参数的值为负,则将其忽略。如果既不使用数字也不使用*,则精度为零。有关精度的确切影响,请参见下表。因此,如果我们尝试两种转换规范#include <stdio.h>int main() {&nbsp; &nbsp; int precision = 8;&nbsp; &nbsp; int biggerPrecision = 16;&nbsp; &nbsp; const char *greetings = "Hello world";&nbsp; &nbsp; printf("|%.8s|\n", greetings);&nbsp; &nbsp; printf("|%.*s|\n", precision , greetings);&nbsp; &nbsp; printf("|%16s|\n", greetings);&nbsp; &nbsp; printf("|%*s|\n", biggerPrecision , greetings);&nbsp; &nbsp; return 0;}我们得到输出:|Hello wo||Hello wo||&nbsp; &nbsp; &nbsp;Hello world||&nbsp; &nbsp; &nbsp;Hello world|

梵蒂冈之花

我不认为上面的代码是正确的,但(根据这个描述printf())的.*手段宽度不是在格式字符串中指定的,而是作为必须格式
打开App,查看更多内容
随时随地看视频慕课网APP