char **w = c->u.word;
printf ("%*s%s", indent, "", *w);
好的,目前,作为字符串值*w
保存。
而且我访问它没有问题。
indent 是整数值,即 2。 "true"
首先,我不明白 printf 函数在这种情况下是如何工作的。看起来它有四个参数。其次,我期望输出为“真”,但我什么也没得到。为什么会这样?
char **w = c->u.word;
printf ("%*s%s", indent, "", *w);
好的,目前,作为字符串值*w
保存。
而且我访问它没有问题。
indent 是整数值,即 2。 "true"
首先,我不明白 printf 函数在这种情况下是如何工作的。看起来它有四个参数。其次,我期望输出为“真”,但我什么也没得到。为什么会这样?
星号 (*) 表示您可以定义可变字段宽度。所以
"%*s%s"
意味着您有一个具有可变字段宽度的字符串(字段的长度在字符串为 to 之前作为整数传递printf
)。后面是一个字符串,该字符串将不带填充打印。
你的参数是:
indent, "", *w
格式中,indent
对应星号(*
),""
对应s
中的%*s
,*w
对应do的%s
。所以这将打印一个长度为零的字符串,其字段宽度为 ,indent
后跟*w
指向的字符串。换句话说,您将始终在输出indent
中的字符串前面获得空格。*w
printf("%10s","Hello");
这将打印宽度为 10 的 hello 并且它是右对齐的。
printf("%*s",10,"Hello"); //is same as above
printf ("%*s%s", indent, "", *w);
这将在打印指向的字符串之前打印缩进的空格数*w